我知道如何对结果集进行排序:
SELECT * FROM `People` ORDER BY `LastName` ASC
但是,在开头显示空LastName的结果。如何按升序排序,并在结尾而不是从头开始显示NULL结果?
答案 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