EXISTS・NOT EXISTS(行の存在の判定)

更新日:

用語解説

EXISTS・NOT EXISTSは、SQLで、副問合せの結果に行があるかどうかを判定する述語です。

■ 試験で押さえるポイント

  • EXISTSは、副問合せの結果が1行でもあれば真になります。

  • NOT EXISTSは、副問合せの結果が0行のときに真になります。

  • 相関副問合せと組み合わせて、「〜がある(ない)もの」を探します。

述語

副問合せの結果が1行以上

副問合せの結果が0行

EXISTS

真(外側の行を残す)

偽(外側の行を除く)

NOT EXISTS

偽(外側の行を除く)

真(外側の行を残す)

sql
SELECT 社員コード FROM 社員 X
  WHERE NOT EXISTS
    (SELECT * FROM 社員 Y WHERE X.社員コード = Y.上司)

X.社員コード

Y.上司 = X.社員コード となる行(部下)

副問合せの行数

NOT EXISTS

S001

S002, S003

2行

偽(除く)

S002

なし

0行

真(残す)

S003

S004

1行

偽(除く)

■ 過去問での着眼点

NOT EXISTSで、「注文のない顧客」のような条件を書けるようにします。

例: 注文の表に行がない顧客を、NOT EXISTSで検索します。

同じ分野の用語