代码之家  ›  专栏  ›  技术社区  ›  Norbert Pushparaj Yuvaraj

按姓氏排序,然后按名字排序?

  •  1
  • Norbert Pushparaj Yuvaraj  · 技术社区  · 14 年前

    我计划构建一个mySQL表,该表需要一个学生的名字,如下所示:

    Last Name + Father's First Name Initials + First Name
    

    例子:

    Beavers L. Scott James (father has one first name, son has two first names) 
    Beavers L. D. Scott (father has two first names)
    

    我不需要填写3个输入字段,只需要一个。但问题是,我该怎么分类呢?我想先按“姓”排序,然后按“名”排序,再按“父亲的缩写”排序。两个名字相似的学生会这样排序:

    1. Beavers F. Christian
    2. Beavers V. Scott James
    3. Beavers L. Scott Paul
    4. Beavers K. Sean
    5. Beavers Q. Sean
    

    3 回复  |  直到 14 年前
        1
  •  6
  •   tpdi    14 年前

    存储三个单独的字段:姓、名、父缩写。

    然后连接输出:

    select concat( last_name, ' ',  paternal_initials, ' ', first_name) as displayed_name
    from table 
    order by last_name, paternal_initials, first_name;
    

    更新:

    但人们不会这样想:姓,父母的缩写,名。

    如果您的用户所在的文化中姓氏排在最后,那么 有一个领域 Student's Name Father's Name ,并假设每个中的最后一个单词是姓氏。当然,如果姓氏后面跟有“Jr”、“Senior”或“3rd”等后缀,而西班牙语国家的姓氏后面跟有母亲的姓氏,这一点就失败了。

    当然,最安全的是独立的、明确的字段。对用户来说,必须在另一个字段上添加标签的额外“成本”实际上可能小于必须弄清楚如何使用模糊字段的认知“成本”。

        2
  •  2
  •   Mark Baker    14 年前

        3
  •  1
  •   David    14 年前