PostgreSQLでINTERSECTを使った共通行抽出方法|使い方と例を解説

データベース

PostgreSQLでは、複数のクエリ結果に共通して存在する行を抽出したい場合、INTERSECT演算子を利用することができます。本記事では、INTERSECTの基本的な使い方と注意点をわかりやすく解説します。

INTERSECTの基本構文

INTERSECTは2つ以上のSELECT文の共通部分を抽出するために使用します。基本構文は以下の通りです。

SELECT column_list FROM table1
INTERSECT
SELECT column_list FROM table2;

この場合、両方のSELECT文で取得される列とデータ型が一致している必要があります。

具体例

例えば、従業員テーブルと契約テーブルの両方に存在する社員IDを抽出する場合は次のようになります。

SELECT employee_id FROM employees
INTERSECT
SELECT employee_id FROM contracts;

これにより、両方のテーブルに共通する社員IDのみが結果として返されます。

注意点と制限

1. SELECT文の列数とデータ型が一致している必要があります。

2. INTERSECTは自動的に重複を排除(DISTINCT)します。重複も含めたい場合は代わりにJOINを検討してください。

3. ORDER BY句はINTERSECT全体の最後に1回だけ指定可能です。

応用例:複数条件での共通抽出

複数列を条件に共通行を抽出することも可能です。

SELECT employee_id, department_id FROM employees
INTERSECT
SELECT employee_id, department_id FROM contracts;

この例では、社員IDと部署IDの両方が一致する行のみが抽出されます。

まとめ

PostgreSQLのINTERSECTを使うことで、複数のクエリ結果に共通する行を簡単に抽出できます。

列数やデータ型の一致、重複処理などの注意点を理解して使うことで、正確で効率的なデータ抽出が可能になります。

コメント

タイトルとURLをコピーしました