MySQL - 按字母顺序列出给定名称前面的名称的详细信息(名字和姓氏分开)

时间:2015-11-09 20:12:19

标签: mysql sql

在名为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之前的姓名中可以使用任何名字?

2 个答案:

答案 0 :(得分:4)

WHERE last_name < 'Callaghan' OR (last_name = 'Callaghan' AND first_name < 'Harry')

只有姓氏完全匹配时,名字才有意义。

答案 1 :(得分:1)

这样做的另一种方法(虽然更糟糕的是@ maraca&#39; s因为它无法使用索引,是这样的):

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