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

左连接Cities表时,筛选大城市及无城市记录人员的SQL条件问题

解决方案

正确的SQL语句如下:

SELECT * 
FROM People p
LEFT JOIN Cities c ON c.CityID = p.PCityID
WHERE c.Size = 'Large' OR c.CityID IS NULL;

错误写法分析

  • 写法一问题:左连接后,无关联City记录的行中c.Size为NULL,NULL = 'Large'的判断不成立,导致这类行被过滤,不符合需求。
  • 写法二问题:把c.Size='Large'放在连接条件里,只会限制匹配的City数据,但不会过滤People记录——关联到非Large城市的人员依然会被保留(仅City字段为NULL),无法达到筛选目的。

正确逻辑说明

左连接会保留所有People记录,后续通过WHERE条件筛选两类目标数据:

  1. 成功匹配到Size='Large'的City记录;
  2. 未匹配到任何City记录(通过c.CityID IS NULL判断)。

这样就能精准得到你需要的结果:仅包含居住在Large城市的人员,以及无关联City记录的人员。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:30:00