我有一张表roles
,我想以特殊顺序检索数据。
该表具有id
和description
字段。
我想先获取最后一行的值描述,然后再按升序获取其余描述数据。
我的意思是先检索最后一个id,然后按正常的升序检索其余的id。
该表被另一个表引用,因此无法重新布置以实现此目的。
这可能吗?
答案 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