SQL:ORDER BY两列混合,不基于优先级

Tyl*_*ler 4 mysql sql

我正在使用mySQL.我必须通过姓氏订购联系人的姓名,但如果没有姓氏,我按名字排序.

这看起来像:

ORDER BY lastname = "", lastname, firstname
Run Code Online (Sandbox Code Playgroud)

但是,这会使具有姓氏的那些显示在顶部.我喜欢的行为是混合第一个和最后一个名字,就像它们来自同一个字段一样.

示例(假装这些是名称):

A,T 
Z,G 
A 
B 
C
Run Code Online (Sandbox Code Playgroud)

与:

A
A,T
B
C
Z,G
Run Code Online (Sandbox Code Playgroud)

谢谢

Cad*_*oux 18

使用COALESCENULLIF:

ORDER BY COALESCE(NULLIF(LastName, ''), FirstName), FirstName
Run Code Online (Sandbox Code Playgroud)


Joh*_*ock 8

尝试使用Coalesce
注意:这将要求您不要使用空字符串(即"")存储空的姓氏

ORDER BY Coalesce(LastName, FirstName)
Run Code Online (Sandbox Code Playgroud)

在评论中建议通过再次将FirstName添加到订单依据列表,您将正确地订购具有相同lastName的两个人.这是一个例子.

ORDER BY Coalesce(LastName, FirstName), FirstName
Run Code Online (Sandbox Code Playgroud)