我的具体用例是我想按名称对用户列表进行排序;名字,姓氏。用户具有首选名称和合法名称。我希望按首选名称排序,如果它存在,但合法名称为后退。
例如,如下表所示:
id | first_name | last_name | preferred_first_name | preferred_last_name
----+------------+-----------+----------------------+---------------------
9 | Ryan | Bently | Alan |
10 | Ryan | Do | Billy | Baxter
11 | Olga | Clancierz | |
12 | Anurag | Plaxty | | Henderson
13 | Sander | Cliff | Billy |
我想这样排序:
Alan Bently
Anurag Henderson
Billy Baxter
Billy Cliff
Olga Clancierz
通常,只有一个名称字段的名称集我会这样做:
SELECT * from users ORDER BY users.first_name, users.last_name
出现时按首选名称字段排序的最佳方式是什么,但当它们不存在时会回退到其他名称字段?
答案 0 :(得分:2)
尝试
ORDER BY COALESCE(users.preferred_first_name,users.first_name), users.last_name