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

MySQL多表LEFT JOIN查询结果异常的正确SQL写法

错误原因
  • 关联逻辑缺失:你的LEFT JOIN仅通过user_id字段做关联,没有加入incident_id匹配条件。对于user_id=640的记录,表2里有2条同user_id的数据,关联时表1的两条记录(incident_id=976、980)会同时匹配到表2user_id=640的两条结果,产生笛卡尔积冗余。
  • 分组逻辑不规范:你使用GROUP BY但没有对outcome字段做明确聚合,MySQL在非严格模式下会返回分组内第一条扫描到的outcome值,最终导致incident_id=980的记录错取到CR值。
正确查询语句

两张表是通过incident_id + user_id的联合字段做唯一匹配的,关联时需要同时指定两个字段的匹配规则,且当前场景下无需使用GROUP BY:

SELECT table1.incident_id, table1.user_id, table2.Outcome
FROM table1
LEFT JOIN table2 
  ON table1.user_id = table2.user_id
  AND table1.incident_id = table2.incident_id;

注意:如果后续业务场景中关联后确实存在一对多需要分组聚合的情况,必须对非分组字段明确写聚合逻辑(比如MAX(table2.Outcome)),不要依赖数据库默认的隐式取值规则,避免出现结果不符合预期的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:27:18