1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PostgreSQL の EXISTS 句の使い方

Posted at

EXISTS は サブクエリが1行でも結果を返すかどうか を確認するときに使います。
返り値は boolean型 (true / false) です。

  1. 基本構文
    SELECT EXISTS (
    SELECT 1
    FROM a
    WHERE 条件
    );
    EXISTS の中のサブクエリが 1行でも返せば true、返さなければ false
    SELECT 内の列は実際には何でもよく、通常は 1 を書くことが多い
    条件に合う行が存在するかどうかを確認する用途

  2. 例1: 特定の行が存在するか確認
    -- table a に id=10 の行が存在するか
    SELECT EXISTS (
    SELECT 1
    FROM a
    WHERE id = 10
    );
    もし id=10 が存在すれば true、なければ false

  3. 例2: 別テーブルとの関連で存在チェック
    -- table b の user_id が table a に存在するかをチェック
    SELECT b.user_id, EXISTS (
    SELECT 1
    FROM a
    WHERE a.id = b.user_id
    ) AS exists_in_a
    FROM b;
    b の各行ごとに、対応する a.id が存在するか boolean を返す

  4. EXISTS と NOT EXISTS
    EXISTS → 行があれば true
    NOT EXISTS → 行がなければ true
    -- table a に id=10 の行がなければ true
    SELECT NOT EXISTS (
    SELECT 1
    FROM a
    WHERE id = 10
    );

  5. ポイント
    EXISTS は サブクエリの行が1行でも存在するかどうか だけをチェック
    サブクエリ内の列は何でもよく、SELECT 1 が一般的
    JOIN よりも効率的に「存在確認」ができる場合が多い

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?