首先获取最后一条记录,然后按升序获取其余记录

时间:2019-03-11 05:24:55

标签: mysql sql mysqli

我有一张表roles,我想以特殊顺序检索数据。

该表具有iddescription字段。

我想先获取最后一行的值描述,然后再按升序获取其余描述数据。

我的意思是先检索最后一个id,然后按正常的升序检索其余的id。

该表被另一个表引用,因此无法重新布置以实现此目的。

这可能吗?

3 个答案:

答案 0 :(得分:1)

请写下来。

   SELECT id, description
    FROM @tbl
    ORDER BY
    CASE WHEN id= (SELECT MAX(id) FROM @tbl) THEN 0 ELSE 1 END

答案 1 :(得分:0)

一个选项使用子查询排序以找到最后的描述:

SELECT id, description
FROM yourTable
ORDER BY
    CASE WHEN id = (SELECT MAX(id) FROM yourTable) THEN 0 ELSE 1 END,
    id;

如果您使用的是MySQL 8或更高版本,则可以尝试使用MAX作为分析函数来避免子查询:

SELECT id, description
FROM yourTable
ORDER BY
    IF(id = MAX(id) OVER (), 0, 1),
    id;

答案 2 :(得分:-2)

请尝试这个。

SELECT id, description
FROM @tbl
ORDER BY
CASE WHEN id= (SELECT MAX(id) FROM @tbl) THEN 0 ELSE 1 END

示例:---

Declare @tbl Table(
id INT ,
description   Varchar(50),
description22   Varchar(50),
DeptId INT
)

INSERT INTO @tbl VALUES(1,'g1','g2',NULL)
INSERT INTO @tbl VALUES(2,'g2','g3',NULL)
INSERT INTO @tbl VALUES(3,'g3','g1',NULL)


SELECT id, description
FROM @tbl
ORDER BY
    CASE WHEN id = (SELECT MAX(id) FROM @tbl) THEN 0 ELSE 1 END