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

SQL多表查询:如何按指定列分组获取另一列的MAX值?

嘿,这个问题的核心其实是跨表关联后分组聚合,不过首先得确认一个关键前提:你的Colors表和Time表之间有没有关联字段呀?比如是不是有共同的记录ID、外键这类能把两张表的对应记录绑定起来的字段?毕竟要把Pigments和Hour对应上,总得有个“桥梁”才行对吧?

假设咱们现在有一个合理的关联字段(比如两张表都有RecordID,你可以换成实际的关联字段),下面给你两种常用的实现方案:

方案一:直接关联后分组聚合

这是最直观的写法,先通过关联字段把两张表连接起来,再按Pigments分组,取每组对应的Hour最大值:

SELECT c.Pigments, MAX(t.Hour) AS Max_Hour
FROM Colors c
JOIN Time t ON c.RecordID = t.RecordID -- 替换成你的实际关联条件
GROUP BY c.Pigments;

方案二:先聚合子表再关联

如果你的Time表数据量很大,或者关联逻辑比较复杂,可以先对Time表按关联字段聚合出最大Hour,再和Colors表关联,最后按Pigments分组:

SELECT c.Pigments, agg.Max_Hour
FROM Colors c
JOIN (
    SELECT RecordID, MAX(Hour) AS Max_Hour
    FROM Time
    GROUP BY RecordID
) agg ON c.RecordID = agg.RecordID
GROUP BY c.Pigments;

要是你还没明确两张表的关联关系,得先理清这个哦!不然没法准确把Pigments和对应的Hour匹配起来~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:51:55