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