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

SQL如何基于表最大值进行Join关联 多表查询结果不符合预期

问题解答

现有SQL的错误点

  • 核心逻辑错误:子查询select max(A.Val) from A as a where a.Val = A.val的过滤条件错误,你用子查询的a表Val和外层A表当前行的Val做等值匹配,导致每次子查询返回的最大值就是当前行的Val,等于没有做最大值过滤,所有和B表关联上的A行都会被保留,所以返回了3条结果。
  • 字段名拼写错误2处:
    • where条件里的C.Lable拼写错误,正确字段名为C.Label
    • 查询返回的A.txt不存在,表A的对应字段名为text

修正后的实现方案

方案1:先求符合条件的最大Val再关联(兼容性最高)

select C.Label, A.text
from C
join B on B.Label = C.Label
join A on A.Val = B.Val
where C.Label = 'Adria'
and A.Val = (select max(A.Val) from A 
             join B on A.Val = B.Val 
             where B.Label = 'Adria')

方案2:排序取Top1(适合单条最大结果的场景,写法更简洁)

select C.Label, A.text
from C
join B on B.Label = C.Label
join A on A.Val = B.Val
where C.Label = 'Adria'
order by A.Val desc
limit 1

两种方案都可以输出你预期的Adria bars结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:48:03