mysql通过group by 分组子查询时,会自动保留最先搜索出来的数据。通过这个特性可以实现想要的结果,比如查询每科目考试第一名的同学成绩、查询每班最后一名到校的学生或者或者每班最先到校的学生。所有这些需求和要求可以放到子查询的order by子句下。通过order by 子句实现最先搜索出来的数据。
select * from
(
select * from table_name order by op_time desc
) as t
group by t.user_id;
在mysql5.5版本下执行该语句,ok,完美实现分组查询最新一条记录。
但是放到mysql5.7下,执行……呃呃呃,什么情况?怎么不是想要的结果?
难道是执行姿势不对?
正威禁坐,执行......不对。
难道说发型不对?换个发型,执行……还是不对!
不够虔诚?沐浴更衣,执行……不对!
到底是什么原因?
找啊找,试啊试,终于发现彩蛋了:
select * from
(
select * from table_name order by op_time desc
limit 1000
) as t
group by t.user_id;
原来mysql5.7版本需要在子查询中加通关密语:limit,否则暗号不对,概不执行。
分析原因:5.7版本加limit 限制也是怕数据量太大,影响执行速度吧,为了取到自己想要的全部数据,limit后面的记录数自己可以灵活设置,基本不影响对该特性的使用。
优化是优化了,相信也给不少老司机挖了大大的坑。
下面做个小调查,你跳过这个坑吗?
相信看过这篇文章后,肯定会一跃而出的,再大的坑也挡不住你前进的步伐哦!
文章转载自数据库精要,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
3388次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
912次阅读
2025-04-25 15:30:58
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
542次阅读
2025-04-17 17:02:24
MySQL 8.0 OCP 1Z0-908 考试解析指南(二)
JiekeXu
363次阅读
2025-04-30 17:37:37
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
数据库运维之道
306次阅读
2025-04-28 11:01:25
SQL优化 - explain查看SQL执行计划(下)
金同学
302次阅读
2025-05-06 14:40:00
MySQL 8.0 OCP 1Z0-908 考试题解析指南
青年数据库学习互助会
294次阅读
2025-04-30 12:17:54
MySQL 官方准备了 3 个月的羊毛,万万没想到 8 天就被薅秃了,看看JieKeXu怎么说?
青年数据库学习互助会
283次阅读
2025-05-09 10:07:42
MySQL 8.4 新特性深度解析:功能增强、废弃项与移除项全指南
JiekeXu
252次阅读
2025-04-18 20:21:32
4月“墨力原创作者计划”获奖名单公布!
墨天轮编辑部
209次阅读
2025-05-13 16:21:59