2011-11-03 15 views
8

私は2つの簡単な表があります(ここでの唯一の "ID" 欄)2つのSQLテーブルを比較し、紛失IDを返しますか?

TABLE1:

id 
1 
2 
3 
4 

表2:

id 
2 
4 

SQLクエリが不足しているために2つのテーブルを比較する必要があります」 id2 "を返します。返信: 1,2

アイデア? :) TY

+0

これまでのところ、すべての回答は、table1のIDがtable2にないものだけを示しています。あなたはcolumn1にも欠けているtable2のすべてのものを返すクエリを必要としていますか? –

+0

こんにちはポール、いいえ、片方だけが私が必要なものです。 – MilMike

+1

キーワードは「EXCEPT」です。 MySQLはこの操作をサポートしていませんが、検索でこれを使用すると、work-aboutsやその他の方法で多くの結果が返されます。 (この質問は時々出てくる) –

答えて

26

皮膚にはいくつかの方法この猫があります。

SELECT table1.ID 
FROM  table1 
WHERE  table1.ID NOT IN(SELECT table2.ID FROM table2) 

それとも、左の外側を使用することができ、参加:

SELECT   table1.ID 
FROM   table1 
LEFT OUTER JOIN table2 ON table1.ID = table2.ID 
WHERE   table2.ID IS NULL 
+0

最初のクエリでテーブル名プレフィックスを使用して、IDフィールドを明確にすることをお勧めします。なぜなら、拡張した場合に読み込みが非常に混乱するからです後で。 – Polynomial

+0

@Polynomial、合意され、更新されました。 –

+1

年前。しかし、まだ助けてください。私はあなたの答えを見つけました:D thx –

2
select t1.* 
from table1 t1 
left outer join table2 t2 on t1.id = t2.id 
where t2.id is null 
+1

@Raihan LEFT OUTERはT2からの "no rows"に、与えられたT1のために参加するかもしれません(これはこのアプローチのためのlynchpinです)。欠落している行は欠けている行です: –

+0

なぜdownvoteですか? – RedFilter

1

はこれを試してみてください:

SELECT table1.id 
FROM  table1 
WHERE  table1.id NOT IN(SELECT table2.id FROM table2) 
は、
関連する問題