PostgreSQLにおけるサブクエリの構文と使用法


  1. 単純なサブクエリの例:

    SELECT column1
    FROM table1
    WHERE column2 IN (SELECT column3 FROM table2);

    上記の例では、table2column3の値に基づいて、table1column1を選択しています。IN演算子を使用して、サブクエリの結果をフィルタリング条件として使用しています。

  2. スカラーサブクエリの例:

    SELECT column1, (SELECT MAX(column2) FROM table2) AS max_value
    FROM table1;

    上記の例では、table2column2の最大値を取得し、それをtable1の各行に対して計算されたカラムmax_valueとして追加しています。

  3. 相関サブクエリの例:

    SELECT column1
    FROM table1 t1
    WHERE column2 > (SELECT AVG(column3) FROM table2 t2 WHERE t2.column4 = t1.column4);

    上記の例では、メインクエリのテーブル(table1)とサブクエリのテーブル(table2)の間に相関関係があります。サブクエリの結果はメインクエリの条件に依存しています。

  4. EXISTS句を使用したサブクエリの例:

    SELECT column1
    FROM table1 t1
    WHERE EXISTS (SELECT 1 FROM table2 t2 WHERE t1.column2 = t2.column2);

    上記の例では、table1の行がtable2に存在するかどうかをチェックしています。サブクエリの結果が空でない場合、EXISTS句は真となり、その行が結果に含まれます。

これらはいくつかの基本的なサブクエリの例ですが、PostgreSQLではさまざまなサブクエリの使用法があります。具体的な要件に応じて、より複雑なサブクエリを作成することもできます。