mysql group by 分组后取最大值
https://blog.csdn.net/ariczhou/article/details/48808417
题目:表A中有member_id 和 date 等字段,现在要按 member_id 分组,取分组后date最大的记录。
# 错误方法:
select * from table1 group by member_id order by date
1
因为它是分组后取了组内的第一条数据(至于是第一条是哪一条就不一定了),取出来之后再order by date
# 正确方法一:子查询
select * from (select * from table1 order by date limit 10000000000) t1 group by member_id
1
这样就对了。子查询中的limit 10000000000是必须加的, 是因为mysql中某些版本中可能会做优化, 不加的话还是错误的结果。
# 正确方法二:join (可能更高效?)
select * from `table1` where EXISTS (
select `date` from (
SELECT max(`date`) as id FROM `table1` group by `member_id` limit 10) t
where t.`date`=`table1`.`date`
)
1
2
3
4
5
2
3
4
5
编辑 (opens new window)
上次更新: 2021/10/11, 12:43:58