我有两张桌子,tab1& TAB2。
tab1(T1) tab2(T2)
a1 b1
b1 c1
c1 f1
d1 g1
我正在寻找T2中不存在的表T1中的值。
在这种情况下,输出应为a1 d1
我尝试过以下查询但无法获得正确的解决方案。
select distinct tab1.T1 from tab1 left semi join tab2 on (tab1.T1!=tab2.T2);
答案 0 :(得分:17)
SELECT t1.str
FROM tab1 t1
LEFT OUTER JOIN tab2 t2 ON t1.str = t2.str
WHERE t2.str IS NULL;
结果:
OK
a1
d1
“为什么 t2.str为空条件”:左外连接确保第一个表中的所有值都包含在结果中。那么当第二个表中没有值时会发生什么:在这种情况下,第二个表中的所有列都被报告为null。
因此,在上面的情况中,我们正在精确搜索第二个表项缺失的情况 - 因此我们: