mysql group by第一条记录_mySQL group by 默认取分组结果的第一条记录

本文探讨了MySQL中GROUP BY语句如何默认选取分组内的第一条记录。通过一个例子展示了如何获取每个项目的最新里程碑,即通过ORDER BY对validTime升序排序后再进行GROUP BY操作。反向验证证明了GROUP BY确实会获取每个分组内的第一条数据,即使有多个记录满足条件,也会根据id升序选择第一条。
摘要由CSDN通过智能技术生成

mySQL group by 默认取分组结果的第一条记录

验证过程:

下个SQL 的主要目的是获取每个项目的最近的一个里程碑记录

SELECT

milestone.id ,milestone.projId,milestone.validTime

FROM

(SELECT

*

FROM

proj_milestone

WHERE STATUS =0

ORDER BY validTime ASC) AS milestone

GROUP BY milestone.projId

对应结果:

97dd65830d37ed0780c0a9a16dcd6584.png 要想获取最近的里程碑,预计完成时间validTime采取升序,升序按照group by 进行分组,既可获得每个项目的最近的一个里程碑记录

其中: 如何保证group by 获取的就是这个项目下所有里程碑的第一条呢

进行反向验证:

1 获取这个项目的所有里程碑记录并按照validTime升序排列

SELECT

*

FROM

proj_milestone

WHERE projId = '000'

AND STATUS = 0

ORDER BY validTime ASC

结果:

48ba079ee0df454882475c9cc92c79f8.png

证明group by  拿到的是分组结果的第一条数据与id大小无关

如果validTime,projId,都相同,即满足条件的里程碑记录有多条

82a111a0a5c149c7a4b2b6f31248d146.png

分组结果会自动按照id升序获取第一条,如下:

bef15ee0c1e00232cfb53cee56c86808.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值