前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL的一个分组需求

MySQL的一个分组需求

作者头像
bisal
发布2022-11-30 14:44:16
4040
发布2022-11-30 14:44:16
举报
文章被收录于专栏:bisal的个人杂货铺

同事提了个需求,MySQL的数据库,想将system1、system2、system3的最大版本号对应的num取出来,应该怎么写SQL?

代码语言:javascript
复制
system1,system2,system3,version,num
1,2,3,v1,2
1,2,3,v2,3
1,2,3,v3,4
1,2,4,v1,2
1,2,4,v2,5

创建测试表,

代码语言:javascript
复制
create table t_version(c1 int,c2 int,c3 int,c4 varchar(10),c5 int);
30fe9ecc08e801c05eac9d827dba8da7.png
30fe9ecc08e801c05eac9d827dba8da7.png

最开始,写的是这条SQL语句,

代码语言:javascript
复制
(select c1, c5 from t_version where c1 = (select max(c1) from t_version) limit 1)
union all
(select c2, c5 from t_version where c2 = (select max(c2) from t_version) limit 1)
union all
(select c3, c5 from t_version where c3 = (select max(c3) from t_version) limit 1)
d82928e66e42873a995f0f80758fb4e5.png
d82928e66e42873a995f0f80758fb4e5.png

需求理解错了,这个是按照c1、c2、c3的最大值来计算的。

实际上需要根据"system1、system2、system3的最大版本号对应的num取出来",隐藏的含义是,按照"system1、system2、system3"分组,对应的最大版本号作为条件,如下所示,

代码语言:javascript
复制
select * from t_version
where (c1, c2, c3, c4) 
in (select c1, c2, c3, max(c4)  
from t_version
group by c1, c2, c3);
1ad7084e9009b1201ee227ae6e1cdee9.png
1ad7084e9009b1201ee227ae6e1cdee9.png

其实逻辑不复杂,写这种SQL,最重要的就是能正确理解需求,可能一个"字",就代表了不同的写法,在具备基础SQL编写能力的前提下,还是得多写,才能提升能力。

如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,

96087c065f0441ab22e437b5159117d9.png
96087c065f0441ab22e437b5159117d9.png

近期更新的文章:

减脂能吃么?

参考文献的引用格式规则

金融知识小科普 - 央行逆回购

金融知识小科普 - 做空

最近碰到的一些问题

近期的热文:

"红警"游戏开源代码带给我们的震撼

文章分类和索引:

公众号1100篇文章分类和索引

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/11/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档