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

And*_*rew 15 mysql sql

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

SELECT * FROM `People` ORDER BY `LastName` ASC
Run Code Online (Sandbox Code Playgroud)

但是,在开头显示空LastName的结果.如何按升序排序,并在结尾而不是从头开始显示NULL结果?

Tom*_*m H 13

SELECT
    *
FROM
    People
ORDER BY
    CASE WHEN LastName IS NULL THEN 1 ELSE 0 END,
    LastName
Run Code Online (Sandbox Code Playgroud)

你也可以简单地使用

SELECT
    *
FROM
    People
ORDER BY
    COALESCE(LastName, 'ZZZZZ')
Run Code Online (Sandbox Code Playgroud)

从技术上讲,如果一个人在您的数据库"ZZZZZZ"中实际拥有LastName,则第二个版本将失败.

注意:我确定这只是因为你给出了一个例子,但我希望你没有在实际的生产代码中使用SELECT*... :)