2

我怎样才能得到一个特定的行(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) 排序的寄存器。另外,这种方式要多写一些。

4

3 回答 3

5
SELECT * FROM table ORDER BY id = 5 DESC, id ASC

这会给你类似的东西:5、1、2、3、4、6、7,...

于 2013-02-04T14:56:03.117 回答
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方法有效。

于 2013-02-04T14:55:20.420 回答
0

这会给你'5's first,然后'not 5's

SELECT * 
FROM table 
ORDER BY case when id=5 then 0 else 1 end ASC
于 2013-02-04T14:53:35.403 回答