1

私は2つのテーブルを持っています。

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 です。

4

3 に答える 3

5
select xid 
from table1
where xid not in
(select id from table2)
于 2013-09-30T19:28:07.810 に答える
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
于 2013-09-30T19:29:42.830 に答える
1

これは Sets difference を使用する典型的なケースですが、Rossana が提供するソリューションはこれよりも高速です (Steve Howard のソリューションについてはわかりません)。

select XID as ID from Table1
except
select ID from Table2;

SQLフィドル

このようにして、Table2 にない ID を Table1 から取得します。このソリューションは postgresql で機能することに注意してください。他の RDBMS は MINUS として別の句を使用します。

次の解決策は、IN 句と EXCEPT 句を使用するよりも高速です。

select XID from Table1 t1
where (not exists (
  select ID from Table2 t2 where (t1.XID = t2.ID)
));

SQLフィドル

于 2013-10-01T00:08:48.087 に答える