mysql order by,先为null,后为DESC


78

如何按字段排序DESC,但首先列出NULL值?

所以我有一张桌子:

reuestId | offerId | offerTitle
1        | 1       | Alfa
NULL     | 2       | Beta
2        | 3       | Gamma

我想选择它们,以便结果将是:

NULL | 2 | Beta
2    | 3 | Gamma
1    | 1 | Alfa

Answers:


154

试试这个:

ORDER BY [reuestId] IS NULL DESC, [reuestId] DESC

应该工作(对于mySql)


或子查询类别

30
SELECT *
FROM TableX
ORDER BY (requestId IS NOT NULL)
       , requestId DESC

我认为这个答案与第一个答案相反?
xi.lin 2015年

4
@ xi.lin:不,第一个按DESC顺序放置IS NULL (本质上是一个返回1或0的函数),这个IS NOT NULL按升序放置。它们是等效的。
BlueRaja-Danny Pflughoeft 2015年

@ BlueRaja-DannyPflughoeft感谢您的解释!我只是错误地认为IS NULL是过滤器而不是函数。
xi.lin 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.