MySQL如何仅查询各订单最新版本中指定类型的订单ID
解决方案
可以用单条SQL语句实现需求,核心思路是先筛选出每个订单的最新版本记录,再从中匹配指定的type值:
SELECT r.id_order FROM revisions r INNER JOIN ( SELECT id_order, MAX(id) AS latest_rev_id FROM revisions GROUP BY id_order ) latest_r ON r.id = latest_r.latest_rev_id WHERE r.type LIKE '%wheel%';
逻辑说明
- 子查询
latest_r通过GROUP BY id_order对订单分组,用MAX(id)获取每个订单对应的最新版本ID(默认revisions.id递增代表版本更新顺序,符合你提供的数据规律)。 - 将主表
revisions与子查询结果关联,仅保留每个订单的最新版本记录。 - 最后通过
WHERE子句筛选出type匹配目标值的订单ID。
执行该语句后,只会返回订单3的ID,完全符合你的需求。
内容的提问来源于stack exchange,提问作者JozefVasko
相关产品推荐
相关产品推荐

