获取一行,然后其他人按ID排序

时间:2013-02-04 14:49:44

标签: mysql sql

如何获取特定行(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)排序的寄存器。另外,这样写是必要的。

3 个答案:

答案 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