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

MySQL关联查询中获取另一表MAX()值的实现方案咨询

获取MySQL关联查询中path.step最大值的最优实现方案

我有一个关联material表和path表的MySQL内连接查询,执行后path.step字段会返回多条同维度下的不同值。为了精简结果行数,我需要获取每个关联组内path.step的最大值。对比后确定MAX()函数比COUNT()更贴合需求,但不确定用WHERE子查询还是CASE语句实现更高效,特来请教。

方案对比

  • WHERE子查询方案:逻辑清晰直接,先通过子查询计算出每个关联维度对应的step最大值,再在外层筛选匹配该最大值的记录。如果path表的关联字段(比如material_id)和step字段建立了联合索引,查询性能会很出色,适合数据量较大的场景。
  • CASE语句方案:一般用于条件赋值或行转列场景,若用来获取最大值,需要配合分组聚合操作,写法相对冗余,且容易因分组逻辑错误导致结果不符合预期,实用性不如子查询方案。

最终解决的SQL语句

我最终采用了WHERE子查询嵌套MAX()的方式解决了问题,示例SQL如下(假设关联字段为material.id = path.material_id):

SELECT m.*, p.step
FROM material m
INNER JOIN path p ON m.id = p.material_id
WHERE p.step = (
    SELECT MAX(step)
    FROM path
    WHERE material_id = m.id
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:52:07