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

LEFT JOIN中AND过滤条件失效,返回不符合条件数据的问题求助

问题原因

你用的LEFT JOIN里,ON子句中的al.service_d = 222只会控制右表(docloc)能不能匹配左表的行,不会过滤左表(vendor_location)本身的数据。也就是说,哪怕左表中service_d不等于222,这些行还是会被返回,只是对应的docloc.loc_id会是NULL,这就是你看到不符合条件数据的原因。

解决方法

如果你的需求是只返回service_d = 222的数据,把条件移到WHERE子句里就能过滤掉左表中不符合条件的行:

SELECT top 10 al.prsnpk,al.serviceid, al.locid al_loc_id, docloc.loc_id doc_loc_id
from vendor_location al 
LEFT JOIN (SELECT DISTINCT locid FROM dorder_location) docloc 
    ON al.locid = docloc.Locid
WHERE al.service_d = 222

要是你想保留左表所有行,但仅当service_d = 222时才尝试关联右表,那原SQL逻辑没问题,但你得自行判断是否保留那些service_d≠222的行——不需要的话就用上面的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:18:00