- 締切済み
複数のPKを持つテーブル同士の結合について
以下のような2つのPKを持つテーブル同士で、お互いに存在しないPKのデータを抽出するときのSQLを教えて下さい。 以下のデータの場合、テーブルAではCODE_1がAAAAAのデータ、テーブルBではCODE_1がCCCCCのデータのことを指します。 [テーブルA] CODE_1 CODE_2 ----- --- AAAAA 123 BBBBB 123 [テーブルB] CODE_1 CODE_2 ----- --- BBBBB 123 CCCCC 123 PKがCODE_1だけの場合は、 select distinct テーブルA.CODE_1 from テーブルA,テーブルB where テーブルA.CODE_1 not in ( select テーブルA.CODE_1 from テーブルA,テーブルB where テーブルA.CODE_1 = テーブルB.CODE_1) で、AAAAAが抽出できるとこまでは分かったんですが、複数のPKになったらいきなり分からなくなってしまいました。 どうかよろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
oracleは、次のような感じで、複数要素のin条件が書けます。 where (a,b,c) in ((1,2,3),(4,5,6)) where (a,b,c) in (select A,B,C from hoge) なので、要素が増えても支障はありません。 ただし、今使われているSQLは、合理的でないような気がします。 素直に、 select code_1 from A where exists(select 1 from B where A.code_1=B.code_1) union select code_1 from B where exists(select 1 from A where B.code_1=A.code_1) ; とかで良いように思いますが。