两个不同(可能为空)列的 SQL 顺序

标签 sql sql-order-by

我有一个包含三列的表格;第一列包含 ID,其他两列包含日期(其中最多一个为空,但我认为这不会影响任何事情)。我将如何根据哪个日期较大来订购 ​​ID?我试过了

ORDER BY CASE
WHEN date1 > date2 THEN date1
ELSE date2
END

但这没有用。谁能帮我?此外,我看到其他人发布的所有类似问题都有它,以便查询根据第一列对结果进行排序,然后如果第一列为空,则对第二列进行排序。我是否首先必须定义每个空值?我正在通过一个完整的外连接创建这个表,所以这将是一个完全不同的问题,所以希望它可以用空值来完成。

最佳答案

我相信您的问题与当任一列为 NULL 时比较失败有关。所以,你可能需要:

 ORDER BY CASE
          WHEN date1 IS NULL THEN date2
          WHEN date2 IS NULL THEN date1
          WHEN date1 > date2 THEN date1
          ELSE                    date2
          END

关于两个不同(可能为空)列的 SQL 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9660943/

相关文章:

nhibernate - 为什么 ROW_NUMBER OVER(ORDER BY 列)返回的结果顺序与仅 ORDER BY 列不同?

mysql - 如何对 GROUP BY x DESC 进行查询

php - 如何使用 SQL 按降序排列整数的总和

MySQL - 如何按名称a到z排序但在底部放置空名称?

mysql - SQL查询以检查名称是否以元音开头和结尾

android - 帮助 SQLite 查询

sql - 从 Postgresql 中选择撇号

php - SQL 从多个表中选择 *

sql - PostgreSQL - 相关子查询失败?

mysql - ORDER BY FIELD ,给定的字段顺序最后出现