【问题标题】:How to get order by last name if single field "name" contains both first name and last name如果单个字段“名称”同时包含名字和姓氏,如何按姓氏排序
【发布时间】:2014-03-20 10:29:47
【问题描述】:

我有一个包含用户名和姓的数据库字段“名称”。 例如:

id  name
1   Martha Ron
2   Ryan Knapp
3   John Mithchell
4   Scott Mathews
5   Dean Johns
.....
.....

如何让所有用户按姓氏排序?

注意:我不能在数据库中创建另一个字段,因为它是生产数据库。

【问题讨论】:

    标签: mysql sorting sql-order-by


    【解决方案1】:

    试试这个SUBSTRING_INDEX

    SELECT
    * FROM `table`
    ORDER BY 
     SUBSTRING_INDEX(`name`, ' ', -1);
    

    See fiddle demo

    【讨论】:

    • “Tjeerd Jan van der Molen”怎么样 :)
    • @AzizShaikh 没有最佳猜测来根据样本数据找到合适的空格来区分名字和姓氏,假设最后一个空格后面的单词是姓氏
    【解决方案2】:

    试试这个...参考http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring-index

    SELECT *, SUBSTRING_INDEX(`name`, ' ', -1) as sortname 
    from tablename order sortname;
    

    【讨论】:

    • 希望name 只包含名字和姓氏(也可以有中间名)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多