mysql 重复数据 分组 多条最新的记录
需求:MySQL 分组,倒序排序,各分组得到一条最新的记录
问题:时间倒叙的条件并没有生效
原因:因为在mysql5.7的时候,子查询的排序已经变为无效了,可能是因为子查询大多数是作为一个结果给主查询使用,所以子查询不需要排序的原因。这个其实和数据库的版本有关,mysql 5.7之后的版本对子查询做了优化。它将sql 语句优化了。group by后面的条件都干掉了。
解决方案:可以 在“子查询”加 倒序排序 limit 10000,在“主查询” 进行分组,这样倒序排序就生效了,对子查询的排序进行limit限制,限制条数尽可能的设置大些。
例子:
SELECT * FROM(
SELECT
tms.id supplierId,
tms.name supplierName,
tms.contact_name contactName,
tms.contact_phone contactPhone,
til.material_id materialId,
til.recent_quotation recentQuotation,
til.quote_time
FROM
tenant_inquiry_library til
LEFT JOIN tenant_material_supplier tms
ON til.supplier_id = tms.id
WHERE
til.material_id = 1377127968075161602
ORDER BY til.quote_time DESC LIMIT 10000
) a GROUP BY a.supplierId
效果图:
其他与该问题相关的详细文章:
1、sql组内按时间排序,时间会失效
版权声明:本文为CSDN博主 [秃头中成长] 的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
2、MySQL分组查询每组最新的一条数据(通俗易懂)
版权声明:本文为CSDN博主「C罗辣耳朵」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!