SQL连接,比较两个列值,匹配col值

时间:2013-09-30 19:26:21

标签: sql join

我有两张桌子。

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。

3 个答案:

答案 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;

SQLFiddle

这样您就可以从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)
));

SQLFiddle