按姓氏排序列表

时间:2019-05-19 05:04:15

标签: mysql sql

如果您在名为“目录”的表中有一个名称列表,如下所示,那么如何编写一个查询来返回这些名称,但按姓氏的字母顺序显示它们

目录:

Jason Howard, Tom Albert, Sam Smith

要做到这一点,我想你可以做:

select * from directory order by name

我假设全名是字段“名称”

3 个答案:

答案 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),香港普爱和比尔·普雷斯顿·埃斯奎尔三世。