当前位置:Gxlcms >
mysql >
关于MYSQL中每个用户取1条记录的三种写法(groupbyxxx)
关于MYSQL中每个用户取1条记录的三种写法(groupbyxxx)
时间:2021-07-01 10:21:17
帮助过:177人阅读
今天以前的同学问我关于这方面的SQL语句,我特意记忆一下,毕竟这个也比较常见了
代码如下:
select * from (select * from member_payment
order by id desc) t group by member_id limit 10
第一种是先排序,然后group,这样的话自然可以取到最适合的一条数据。
缺点很明显:Using temporary; Using filesort
代码如下:
select s.*
from (SELECT max(id) as id FROM `member_payment` group by `member_id` limit 10) t
left join `member_payment` as s on t.id=s.id
第二种是联合查询
代码如下:
select * from `member_payment` where EXISTS (
select `id` from (
SELECT max(`id`) as id FROM `member_payment` group by `member_id` limit 10) t
where t.`id`=`member_payment`.`id`
)
第三种是子查询
窃以为第二种效率最高
您可能感兴趣的文章:
- 解析mysql中:单表distinct、多表group by查询去除重复记录
- mysql分组取每组前几条记录(排名) 附group by与order by的研究
- MySQL高级查询之与Group By集合使用介绍
- mysql中group by与having合用注意事项分享
- 使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
- 深入解析mysql中order by与group by的顺序问题
- mysql筛选GROUP BY多个字段组合时的用法分享
- MySql版本问题sql_mode=only_full_group_by的完美解决方案
- 详解SQL中Group By的用法
- 一篇文章带你了解数据库中group by的用法