UNION / INTERSECT / EXCEPT


クエリの結合とは、2つのクエリの出力結果を和、差、積、の 3 種類の方法で結合することです。

和結合は「UNION 演算子」、積結合は「INTERSECT 演算子」、差結合は「EXCEPT 演算子」を用います。

2つのクエリの出力結果を結合することから、それぞれのクエリから出力される列は比較可能なものでなければなりません。
データ型と列数が一致しなければ、クエリを結合することはできません。

ここでは、これらの演算子を用いた例を簡単に説明するために、次の 2つのテーブルを想定します。

ある自動車メーカーの製品を取り扱う販売店の商品テーブルです。
簡略化のため、製品名の列のみを示します。
取り扱い製品表の名前を、BLUE 販売店のものは「BLUE」、RED 販売店のものは「RED」とします。

使用する表

BLUE 販売店

製品名
AVENILE
PRIMEPA
GLOLIA
STAJIA
CEDRIK
BLUE BARD
DATSON
PRESAJZ
LAULEL
TERANO

RED 販売店

製品名
GLOLIA
CEDRIK
DATSON
LAULEL
TERANO
SANNY
SKYLINN

UNION演算子

UNION 演算子は、2つのクエリの出力を和結合します。
すなわち、2つのクエリの結果を結合し、そこから重複する行を削除します。

/* UNION */

 SELECT * FROM BLUE
 UNION
 SELECT * FROM RED ;
/* 実行結果 */
製品名
─────
AVENILE
PRIMERA
GLOLIA
STAJIA
CEDRIK
BLUE BARD
DATSON
PRESAJU
LAULEL
TERANO
SANNY
SKYLINN

重複を削除しない場合は、「UNION ALL」と記述します。

/* UNION ALL */

 SELECT * FROM BLUE
 UNION ALL
 SELECT * FROM RED ;
/* 実行結果 */
製品名
─────
AVENILE
PRIMERA
GLOLIA
STAJIA
CEDRIK
BLUE BARD
DATSON
PRESAJU
LAULEL
TERANO
GLOLIA
CEDRIK
DATSON
LAULEL
TERANO
SANNY
SKYLINN

INTERSECT 演算子

INTERSECT 演算子は、2つのクエリの出力を積結合します。
すなわち、2つのクエリの結果から同じものだけを出力するものです。

/* INTERSECT */

 SELECT * FROM BLUE
 INTERSECT
 SELECT * FROM RED ;
/* 実行結果 */
製品名
─────
GLOLIA
CEDRIK
DATSON
LAULEL
TERANO

EXCEPT演算子

EXCEPT 演算子は、2つのクエリの出力の差結合します。

/* EXCEPT */

 SELECT * FROM BLUE
 EXCEPT
 SELECT * FROM RED ;
/* 実行結果 */
製品名
─────
AVENILE
PRIMERA
STAJIA
BLUE BARD
PRESAJU

 

/* EXCEPT */

 SELECT * FROM RED
 EXCEPT
 SELECT * FROM BLUE ;
/* 実行結果 */
製品名
─────
SANNY
SKYLINN

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


4 − 4 =

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>