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

Squirrel SQL左关联查询结果变内联 如何修正以返回全部左表记录

SQL查询修正方案

问题根因

  • 左连接的右表过滤条件写在WHERE子句中会导致左连接失效:左连接未匹配到的右表字段返回NULL,WHERE子句会直接剔除不满足过滤规则的NULL行,最终效果等同于内连接。
  • 原查询还存在语法错误:b.month = 'April'和c.month = 'April'之间缺少AND关键字。

修正后语句

SELECT a.id, a.amt, b.ac, c.city, a.month 
FROM table1 AS a 
LEFT JOIN table2 AS b 
  ON a.id = b.id 
  AND b.month = 'April'
LEFT JOIN table3 AS c 
  ON b.ac = c.ac 
  AND c.month = 'April'
  AND c.city = 'london'
WHERE a.month = 'April'

逻辑说明

  • 主表table1的4月过滤保留在WHERE子句,确保只取4月的左表全量记录
  • 右表table2、table3的过滤条件全部移动到对应ON关联条件中,仅过滤右表的匹配范围,不会排除左表记录,未匹配到的右表字段自动返回NULL
  • 执行后会返回预期的2条记录:A123匹配到london返回完整数据,A124关联table3时不满足city=london的条件,city字段返回空值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:27:03