mysql之order by和group by

前言

在使用group by和order by的时候,通常并不会出现什么问题,然而有一种情况会让人忽视。那就是对group组内数据进行order的时候。

通常大家在使用group by和order by的时候,潜意识里会觉得如果group分组里有多条记录,order by会对组内数据进行排序,然后group的数据会是order得到的第一条数据。实际上,order对于group的组内数据并不能进行排序!

eg:
CREATE TABLE `tb` (
`id`  int(11) NOT NULL ,
`group_id`  int(11) NOT NULL ,
`app_id`  int(11) NOT NULL ,
`name`  varchar(255) NOT NULL ,
PRIMARY KEY (`id`)
);
在表tb中存有不同分组的多个APPID信息,现在要求查询每个分组中最大的那一条APPID的记录
方案一:select * from tb group by group_id order by app_id desc;
结果:这种方案实际上获取的是物理块读取的第一条数据,并不一定是最大的APPID

方案二:select * from (select * from tb order by group_id DESC,appid DESC) as tmp group by group_id;
结果:如预期得到需求的数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,107评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,306评论 18 399
  • 《高性能MySQL》&《MySQL技术内幕 InnoDB存储引擎》笔记 第一章 MySQL架构与历史 MySQL的...
    xiaogmail阅读 14,411评论 0 39
  • .数据库 数据库的发展: 文件系统(使用磁盘文件来存储数据)=>第一代数据库(出现了网状模型,层次模型的数据库)=...
    小Q逛逛阅读 4,617评论 0 2
  • 昨夜、たくさんのお酒を飲んでしまった。その結果、今日は体の調子がとても悪くて、気持ちも悪くになった。やっぱり、何よ...
    Seabiscuit_7158阅读 1,666评论 0 0

友情链接更多精彩内容