在姓氏后排序列表,然后是名字?

Nor*_*ert 1 php mysql sorting

我打算构建一个需要学生姓名的mySQL表,如下所示:

Last Name + Father's First Name Initials + First Name
Run Code Online (Sandbox Code Playgroud)

例:

Beavers L. Scott James (father has one first name, son has two first names) 
Beavers L. D. Scott (father has two first names)
Run Code Online (Sandbox Code Playgroud)

我只想要一个,而不是要求填写3个输入字段.但问题是,我该如何排序呢?我想首先按"姓氏"排序,然后按"名字"排序,然后按"父亲姓名首字母"排序.所以两个名字相似的学生会这样排序:

1. Beavers F. Christian
2. Beavers V. Scott James
3. Beavers L. Scott Paul
4. Beavers K. Sean
5. Beavers Q. Sean
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

tpd*_*pdi 6

不要捣乱你的数据.

存储三个单独的字段:姓氏,名字,父亲姓名首字母.

然后catenate输出:

select concat( last_name, ' ',  paternal_initials, ' ', first_name) as displayed_name
from table 
order by last_name, paternal_initials, first_name;
Run Code Online (Sandbox Code Playgroud)

更新:

我想让添加信息的人更容易并使用一个输入字段. - 诺伯特

但人们并不这么认为:姓氏,父母名字缩写,名字.

他们倾向于想到两个独立的实体:一个学生,一个名字,一个学生的父亲的名字.

如果您的用户处于姓氏最后的文化中,您可以拥有一个字段Student's Name和字段Father's Name,并假设每个字母中的最后一个单词都是姓氏.当然,如果姓氏后跟"Jr","Senior"或"3rd"等后缀,以及跟随母亲姓氏的西班牙语国家,则会失败.

最安全的当然是单独的,明确的领域.用户必须选择到另一个字段的额外"成本"实际上可能小于必须弄清楚如何使用模糊字段的认知"成本".