【问题标题】:MySQL - List details of names which precede a a given name alphabetically (first name and last name separate)MySQL - 按字母顺序列出给定名称之前的名称的详细信息(名字和姓氏分开)
【发布时间】:2015-11-09 20:12:18
【问题描述】:

在名为 students 的数据库中,first_name 和 last_name 是单独的列,因此提出了以下问题:

问题: 按字母顺序列出姓名在 Harry Callaghan 之前的所有学生的详细信息(按照姓名按姓氏然后按名字排序的约定)。

我在下面的尝试会错过任何人,例如,first_name = Mark 和 last_name = Brennan。

> SELECT *   
> FROM students   
> WHERE last_name <= 'Callaghan' AND first_name < 'Harry';

如何过滤此查询,以便在 Callaghan 之前的姓氏中可以有任何名字?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:
    WHERE last_name < 'Callaghan' OR (last_name = 'Callaghan' AND first_name < 'Harry')
    

    名字只有在姓氏完全匹配时才重要。

    【讨论】:

      【解决方案2】:

      另一种方法(虽然比@maraca 更糟糕,因为它无法利用索引,是这样的):

      WHERE CONCAT(last_name, ' ', first_name) < 'Callaghan Harry'
      

      【讨论】:

        猜你喜欢
        • 2020-12-22
        • 1970-01-01
        • 2019-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        相关资源
        最近更新 更多