当前位置: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的用法

人气教程排行