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