sql - MySQL:如何按列按升序排序,并在末尾显示 NULL 而不是开头?

标签 sql mysql

我知道如何对结果集进行排序:

SELECT * FROM `People` ORDER BY `LastName` ASC

但是,姓氏为空的结果显示在开头。如何按升序排序,并在末尾而不是开头显示 NULL 结果?

最佳答案

SELECT
    *
FROM
    People
ORDER BY
    CASE WHEN LastName IS NULL THEN 1 ELSE 0 END,
    LastName

你也可以简单地使用

SELECT
    *
FROM
    People
ORDER BY
    COALESCE(LastName, 'ZZZZZ')

从技术上讲,如果某人在您的数据库中的姓氏实际上是“ZZZZZZ”,则第二个版本会失败。

注意:我确定这只是因为您提供了一个示例,但我希望您没有在实际生产代码中使用 SELECT *... :)

关于sql - MySQL:如何按列按升序排序,并在末尾显示 NULL 而不是开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3514298/

相关文章:

mysql - 为 SQL case 表达式中的 'Then' 子句返回多个值

MySQL嵌套查询不会运行,在SQL Server上运行

sql - 如何获取两行值

mysql - 快速获取mysql记录数的方法

mysql - 与云中数据库的连接错误

mysql - 使用 mysql ENUM 是一个糟糕的架构解决方案吗?

mysql - 仅显示来自 2 个查询的相同结果

PHPExcel 无法工作

Mysql 错误 1356 - View

mysql - 这是mysql最好的数据库设计