1

tableAとtableBの2つのテーブルがあります。tableAにはあるがtableBにはないすべてのレコードを取得するにはどうすればよいですか?回避策ではなく、これを行うための適切な方法に興味があります。左結合を使用してからを追加してみましたwhere ID is not null。それは機能しますが、それが正しい方法かどうかはわかりません。

4

5 に答える 5

3
select * from tableA
where id not in (select id from tableB)

また

select * from tableA a
left join tableB b on a.id = b.id
where b.id is null

どちらも、あなたが尋ねたものを取得するための完全に許容できる方法です。

于 2012-08-06T17:10:10.757 に答える
0

テーブルスキーマを指定していないので、各テーブルに主キーがあると仮定します。id1、id2

あなたは左の参加の助けを借りて行うことができます。

id2がnullであるtable1leftjointable2から*を選択します

注:これは実際のクエリではなく、先に進むためのヒントにすぎません。

于 2012-08-06T17:36:22.143 に答える
0

ページにデータを表示する必要がある場合(プログラミング)、これには結合を使用する必要があります。バックアップまたは他の同様の目的でデータをあるテーブルから別のテーブルに移動する必要がある場合は、SQL比較ツールが必要です。最初に、SQL左結合が必要です。テーブルAを左のテーブルにして、Bに入れて結合します

select * from A
left join B  on A.id = B.id
where b.id is null
于 2012-08-06T17:12:49.457 に答える
0

を使用できますNOT EXISTSNOT EXISTS 列がnullを許可しているが、nullがない場合、NOT INパフォーマンスは。よりも大幅に低下するため、使用することをお勧めしますNOT EXISTS

Select * from table1 a
    Where not exists (Select ID from table2 b where a.ID = b.ID)

列では、とNOT EXISTSの動作とパフォーマンスが同じでnon-nullableあるため、状況に合ったいずれかを使用できます。NOT IN

于 2012-08-06T17:16:25.003 に答える
0

SQLフィドル[][1]

デモ http://www.sqlfiddle.com/#!3/10300/2

select * from table1 where id not in(select id from table2)

于 2012-08-06T17:20:35.463 に答える