首页 > 其他分享 >join查询的结果和in查询结果不一致

join查询的结果和in查询结果不一致

时间:2022-12-02 18:47:07浏览次数:45  
标签:domain join 结果 cpd 查询 id fact

SELECT count(*) FROM c_fact cf LEFT JOIN c_processing_detail cpd on cf.id = cpd.fact_id 
WHERE cpd.domain_id ='TB'
AND cf.domain_id ='TB' 
AND cf.is_latest  
AND cpd.id IS NULL ;

SELECT count(*) FROM c_fact WHERE is_latest AND domain_id ='TB'
AND id NOT IN (SELECT fact_id FROM c_processing_detail cpd WHERE domain_id='TB'); 

咋一看感觉两个sql都一样,都是查询没有processingDetail的fact数据。

但是第一个left join是有问题的,如果从表的的id都为null了,从表其他列还能有数据?

错在cpd的domainId这里。

left join的确是查询出左表全表数据,但是右表如果join失败,拼接的右表数据全部都是null,null是无法匹配=的。

所以在where  cpd.domain_id的时候就有问题了。

标签:domain,join,结果,cpd,查询,id,fact
From: https://www.cnblogs.com/woyujiezhen/p/16945328.html

相关文章