【问题标题】:How to order by max(a,b) in SQL?如何在 SQL 中按 max(a,b) 排序?
【发布时间】:2011-10-24 17:23:10
【问题描述】:

考虑下表:

 id    a    b
--------------
 1     5    1
 2     2    3
 3     4    2
 4     3    6
 5     0    1
 6     2    2

我想按max(a,b) 降序排列,结果是:

 id    a    b
--------------
 4     3    6
 1     5    1
 3     4    2
 2     2    3
 6     2    2
 5     0    1

执行这种排序的 SQL 查询是什么?

【问题讨论】:

    标签: mysql sql sql-order-by sql-function


    【解决方案1】:

    使用最棒的:

    SELECT *
    FROM table
    ORDER BY GREATEST(a, b) DESC
    

    【讨论】:

    • 请注意,这两个值都不能为空。示例:select best(null,3) 返回 null。在这种情况下,您将不得不使用合并。选择最大(coalesce(null,0),coalesce(null,0)) 这将返回 0。
    • @nick rulez:啊! mysql ......你想知道为什么有人会在它如此不合理的时候使用它。感谢您提及它,+1
    • @Vincent:你是对的。我不明白这种奇怪行为的原因。 :)
    • @nick rulez:感谢COALESCE 扩展。就我而言,确实需要它,因为表中的行是LEFT JOIN 的结果。顺便问一下,COALESCE 和 MySQL 中的IFNULL 有什么区别吗?
    • COALESCE 可以处理多个值,而IFNULL 只能处理两个值
    猜你喜欢
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 2012-03-30
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多