You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何按code分组查询每个编码对应的最新日期价格记录

问题原因

你原查询的子查询SELECT MAX(date) FROM prices是取整张表的最大日期,没有按code分组,自然只能返回全表最新日期对应的所有记录,无法拿到每个编码各自最新日期的价格。

解决方法

方法1:MySQL 8.0+ 窗口函数方案(最简洁)

用ROW_NUMBER()窗口函数按编码分组、按日期倒序排序,取每个分组排序第一的记录即可:

SELECT code, price, date
FROM (
    SELECT 
        code, price, date,
        ROW_NUMBER() OVER (PARTITION BY code ORDER BY date DESC) AS rn
    FROM prices
) t
WHERE rn = 1;

如果存在同一个code同一个最新日期有多条价格记录的情况,想全部返回可以把ROW_NUMBER()换成RANK()。

方法2:兼容MySQL 5.x 版本的关联查询方案

先通过分组查询拿到每个code对应的最新日期,再和原表关联匹配出对应价格:

SELECT p.code, p.price, p.date
FROM prices p
INNER JOIN (
    SELECT code, MAX(date) AS max_date
    FROM prices
    GROUP BY code
) t ON p.code = t.code AND p.date = t.max_date;

内容的提问来源于stack exchange,提问作者Myers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:15:03