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

时间:2010-08-18 16:26:20

标签: sql mysql

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

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

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

4 个答案:

答案 0 :(得分:13)

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”中实际拥有LastName,则第二个版本将失败。

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

答案 1 :(得分:1)

  SELECT *, LastName IS NULL AS nullity 
    FROM `People` 
ORDER BY nullity ASC, `LastName` ASC

答案 2 :(得分:0)

SELECT * 
FROM `People` 
ORDER BY case when `LastName` is null then 1 else 0 end, 
    `LastName`

答案 3 :(得分:0)

这应该为你做

select *, if(isnull(name), 1, 0) as is_name_null 
from names 
order by is_name_null asc, name asc