我在表中有名字,姓氏,手机。在滚动列表中以“名字姓氏”表示
SELECT * FROM `sh_contact` order by firstname asc;
但是某些行包含空名,因此滚动列表显示为空" lastname".
避免用户界面混乱。如何将所有非空的名字放在顶部并在末尾显示空的名字?
答案 0 :(得分:2)
这应该有效:
SELECT * FROM `sh_contact` ORDER BY CASE WHEN firstname = '' THEN 2 ELSE 1 END, firstname
答案 1 :(得分:1)
您可以使用多个键:
order by (case when firstname = '' or firstname is null then 1 else 2 end) desc,
firstname asc
答案 2 :(得分:1)
尝试一下:
...
order by firstname is null, firstname
之所以可行,是因为在MySQL中,布尔表达式true为1
,而布尔表达式0
则按此排序将所有空名放在最后。
如果要将空白视为空值,请使用以下方法:
...
order by coalesce(firstname, '') = '', firstname
或者如果firstname从不为空,甚至更简单:
...
order by firstname = '', firstname