SQLの交差、結合、差分操作の利用方法と演算子の優先順位
SQL の INTERSECT、UNION、MINUS 演算子は、データセットを操作する演算記号です。
INTERSECT演算子は、2つのデータセット共通の要素を取り出すことを表します。構文は次のようになります。
SELECT column1, column2, ...
FROM table1
INTERSECT
SELECT column1, column2, ...
FROM table2;
table1とtable2の両方にある行を返します。
UNION演算は、2つのデータ集合を1つにマージして、結果の集合に重複レコードが含まれないようにすることです。構文は以下の通りです。
SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;
この操作では、table1 と table2 から重複のないすべての行が返されます。
EXCEPT演算子は、一つのデータ集合から別のデータ集合に存在する要素を除去する演算子です。構文は次のとおりです。
SELECT column1, column2, ...
FROM table1
EXCEPT
SELECT column1, column2, ...
FROM table2;
table1 にあって table2 にない行を返します。
演算子の優先順位に注意する必要がある。差集合が最優先度が高く、次に交集合で、最後に和集合である。従って、これら演算子を複合的に使用する場合は、括弧を用いて明確に演算の順序を明記する必要がある。
table1 と table2 に対して交差と差分を同時に実行したい場合は、次の文を実行します。
(SELECT column1, column2, ...
FROM table1
INTERSECT
SELECT column1, column2, ...
FROM table2)
EXCEPT
(SELECT column1, column2, ...
FROM table1
INTERSECT
SELECT column1, column2, ...
FROM table3);
交差を求めるには、まず差集合を求め、次いで交集合を求めるとよい。
要約すると、SQL の積、和、差は、データ集合を扱う演算記号です。積は共通する要素を返し、和は統合された要素を返し、差は一方のデータ集合にのみある要素を返します。これらの演算記号を使用する際には、演算の優先順位に注意が必要で、括弧を用いて演算の順番を明確にすることができます。