我有两张桌子。
Table 1 columns are
====================
(MAINID, XID, Name)
====================
(A1 1 SAP)
(B2 2 BAPS)
(C3 3 SWAMI)
Table 2 columns are
===================
(ID COL1)
===================
(1 XYZ)
(2 ABC)
现在,我想在Table2的ID列中找到哪个XID值。在表1中,XID是唯一的,并且在表2中ID是PK。
答案 0 :(得分:5)
select xid
from table1
where xid not in
(select id from table2)
答案 1 :(得分:4)
Aln替代解决方案是使用LEFT JOIN。
SELECT tb1.*
FROM Table1 AS tb1 LEFT JOIN Table2 AS tb2
ON tb1.XID = tb2.ID
WHERE tb2.ID IS NULL
答案 2 :(得分:1)
这是一个使用Set差异的典型案例,但Rossana提供的解决方案比这个更快(不确定Steve Howard解决方案):
select XID as ID from Table1
except
select ID from Table2;
这样您就可以从Table1中获取Table2中没有的ID。 请注意,此解决方案适用于postgresql,其他RDBMS使用不同的子句作为MINUS。
下一个解决方案比使用IN和EXCEPT子句更快:
select XID from Table1 t1
where (not exists (
select ID from Table2 t2 where (t1.XID = t2.ID)
));