MySQL分组查询每组最新的一条数据

本文探讨了使用MySQL的max()函数进行分组查询时遇到的问题,并提供了两种有效的解决方案。一种是对子查询进行limit限制,适用于已知数据量场景;另一种是利用ID自增长特性实现正确分组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天突然發現,以前用的一個max()函數取group by分組后最新一條數據的方法有問題。。。

例如,查每位作者最新發佈的文章信息,我的測試數據:

max()方法的查詢結果,查出來的時間是最新的沒錯,但id title content author都還是group by查詢默認的第一條數據,以前沒發現大概是因為前面字段的值都相同吧。。。

另一個網上很流傳但在我這行不通的方法是:先按時間倒序排序,再分組查詢

正確的結果應是id為2 5的數據。

因為在mysql5.7后子查詢的排序已經失效了, 爲什麽失效呢。。。可能因為子查詢的結果不需要排序吧。。

所以這樣就等效于 SELECT * FROM test GROUP BY `author`

目前試過可行的方法:

方法一:對子查詢進行limit限制,適用於明確數據量不會超過多少的場景,否則查不到全部數據。

 方法二:前提是數據表設計id自增

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值