如何获取特定行(id = x)然后获取提醒?类似的东西:
SELECT * FROM table ORDER BY id=5 FIRST THAN id DESC
我尝试使用UNION ALL,例如:
(SELECT * FROM table WHERE id=5)
UNION ALL
(SELECT * FROM table WHERE id!=5 ORDER BY id DESC)
但结果是意外的,因为第二个SELECT不返回由id(desc)排序的寄存器。另外,这样写是必要的。
答案 0 :(得分:5)
SELECT * FROM table ORDER BY id = 5 DESC, id ASC
这会给你类似的东西:5,1,2,3,4,6,7 ......
答案 1 :(得分:2)
您可以在order by
行添加多个子句:
select *
from t
order by (case when id = 5 then 1 else 0 end) desc, id desc
此外,SQL中的表和结果集是无序的。一个例外是对结果集使用order by
。我不希望union all
方法起作用。
答案 2 :(得分:0)
这将首先给你5',然后'不是5'
SELECT *
FROM table
ORDER BY case when id=5 then 0 else 1 end ASC