假设我有一个名为“signup_info”的表格如下:
p_key_id name gender signup_date
1 Bob male 10/5/17
2 Mary female 9/23/14
3 Jamie female 2/6/15
4 Jamie male 3/22/17
我如何编写一个查询,该查询只能为每个人名的实例提供与最近的signup_date相关的最多行?
答案 0 :(得分:2)
我会使用相关的子查询:
select si.*
from signup_info si
where si.signup_date = (select max(s2.signup_date) from signup_info si2 where si2.name = si.name);
如果p_key_id
是自动增量,那么它可能会提供更可靠的方式来获取最新信息:
select si.*
from signup_info si
where si.p_key_id = (select max(s2.p_key_id) from signup_info si2 where si2.name = si.name);
如果有人在同一天报名两次,那么第一次会为该人返回重复的行。