mysql group by 时获取最新的数据

第一种方式

1
SELECT * FROM (SELECT * from tb_dept ORDER BY id desc LIMIT 10000) a GROUP BY parent_id;

这里需求要注意, 由于版本问题, 一定要加上 limit 这个限制, 不然不会取到最新数据, 目前这种情况在 mysql57 和阿里云的 datawork 里面发现了

第二种方式

1
2
3
SELECT * FROM tb_dept td,(SELECT max(id) id FROM tb_dept GROUP BY parent_id) md where td.id = md.id;

SELECT * FROM tb_dept WHERE id IN (SELECT MAX(id) FROM tb_dept GROUP BY parent_id)

直接取 max(id) 再做查询

原文地址-基于mysql实现group by取各分组最新一条数据