首先看测试数据:
根据测试数据,要取到每个member_id中admit_date 最大的一条数据(标黄的数据)。
我最初写的sql是这样的:
select member_id,gender,active_status,max(admit_date)
from test group by member_id
但是使用group by,会导致gender和active_status随机取值。
解决办法1:先拿到最大的admit_date
select * from test as a
where admit_date = (
select max(b.admit_date) from test as b
where a.member_id = b.member_id )
结果:
解决办法2:把admit_date做个降序排序再group by(有个兄弟告诉我group by取的是第一条数据的值,降序就能取到了,但是我试了感觉有时候没用,不太靠谱)
select * from(
select member_id,gender,active_status,admit_date
from test order by admit_date desc
) t1 group by t1.member_id