【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?

以下のような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になったらいきなり分からなくなってしまいました。
どうかよろしくお願いします。

A 回答 (1件)

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)
;
とかで良いように思いますが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す