MySQL数据库中如何查询分组后每组中的最后一条记录
方法一
select *
from messages
where
id in (
select max(id)
fom messages
group by name
);
-- 优化
select b.*
from
(select max(`id`) as id from `messages` group by `name`) as a
join `messages` as b on a.id = b.id;
方法二
select m1.*
from messages m1
left join messages m2 on m1.name = m2.name and m1.id < m2.id
where
m2.id is null;
方法三
SELECT * FROM `messages` GROUP BY name DESC