【问题标题】:mysql order by, null first, and DESC aftermysql order by,先为null,后为DESC
【发布时间】:2012-03-07 15:13:54
【问题描述】:

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

所以我有一张桌子:

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

我想选择它们,结果是:

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

【问题讨论】:

    标签: mysql sql-order-by


    【解决方案1】:

    试试这个:

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

    应该可以工作(对于 mySql)

    【讨论】:

    • 或子查询到类别
    【解决方案2】:
    SELECT *
    FROM TableX
    ORDER BY (requestId IS NOT NULL)
           , requestId DESC
    

    【讨论】:

    • 我认为这个答案与第一个相反?
    • @xi.lin: 不,第一个把IS NULL (本质上是一个返回1或0的函数)按DESC顺序,这个把IS NOT NULL 按升序排列。它们是等价的。
    • @BlueRaja-DannyPflughoeft 感谢您的解释!我只是错误地认为 IS NULL 是一个过滤器而不是一个函数。
    猜你喜欢
    • 2015-02-26
    • 2011-12-22
    • 2013-09-20
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多