前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【mysql】分组后排序失效

【mysql】分组后排序失效

原创
作者头像
无敌小菜鸟
修改2022-05-27 13:54:06
修改2022-05-27 13:54:06
4.4K00
代码可运行
举报
文章被收录于专栏:搬砖笔记搬砖笔记
运行总次数:0
代码可运行

今天写了一个sql,主要目的是查询分组后最新的一条数据,原本的关系是1对多,想通过分组后实现1对1的逻辑关系,而且要保证分组后的数据是按照创建时间排序,确保是最新的一条。

一、前提

mysql实现排序后分组的第一条数据是最新的。

mysql5.7版本默认分组后不是最新的1条数据,需要通过limit实现。

二、解决方案一

解决办法:

一般都会通过连接查询+子查询实现,但是我们这里要加上limit关键字,即可实现分组后的1条数据是最新的1条。

  • 先子查询 排序 加 limit (此时limit 一定要尽可能的大 , 否则数据达到一定程度后查询不到数据
  • 再进行分组查询
代码语言:javascript
代码运行次数:0
运行
复制
SELECT
	space_id,
	max_temp,
	min_temp,
	avg_temp,
	create_time 
FROM
	( SELECT space_id, max_temp, min_temp, avg_temp, create_time FROM t_data_history ORDER BY create_time DESC ) a 
GROUP BY
	a.space_id

排序未生效

1
1

排序生效

代码语言:javascript
代码运行次数:0
运行
复制
SELECT
	space_id,
	max_temp,
	min_temp,
	avg_temp,
	create_time 
FROM
	( SELECT space_id, max_temp, min_temp, avg_temp, create_time FROM t_data_history ORDER BY create_time DESC LIMIT 9999 ) a 
GROUP BY
	a.space_id

控制台数据

2
2

完!

有其他的解决方案会更新此文章。

参考文章:

https://blog.csdn.net/yesmysql/article/details/118611786


腾云先锋(TDP,Tencent Cloud Developer Pioneer)是腾讯云GTS官方组建并运营的技术开发者群体。这里有最专业的开发者&客户,能与产品人员亲密接触,专有的问题&需求反馈渠道,有一群志同道合的兄弟姐妹。来加入属于我们开发者的社群吧!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前提
  • 二、解决方案一
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档