如果您在名为“目录”的表中有一个名称列表,如下所示,那么如何编写一个查询来返回这些名称,但按姓氏的字母顺序显示它们
目录:
Jason Howard, Tom Albert, Sam Smith
要做到这一点,我想你可以做:
select * from directory order by name
我假设全名是字段“名称”
答案 0 :(得分:1)
正如吉姆·霍恩(Jim horn)所说,这不是一个好方法。但是,如果我们将名称的最后一部分视为用户的姓氏(当然,用空格分隔),则可以使用以下查询:
Find
答案 1 :(得分:1)
这真的是一个音符。没有理由选择姓氏来排序。您可以只在ORDER BY
中使用表达式:
ORDER BY SUBSTRING_INDEX(name, ' ', -1)
除非您的数据确实很草率-名称列的末尾带有空格,否则 TRIM()
不必要。
答案 2 :(得分:0)
您的表中只有姓氏全名的全名,还是姓氏和姓氏的单独列?
如果是,那么这是您的ORDER BY姓氏查询。
如果没有,那么为那些名字中有多个空格的人编写代码将是一个真正的痛苦,因为您永远都不会弄清楚姓氏是谁的逻辑,例如Jean克劳德·范·达姆(Claude Van Damme),菲尔·范德·贝克(Phil Vander Beek),香港普爱和比尔·普雷斯顿·埃斯奎尔三世。