※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

  • 8.1 集合演算子
集合演算子は、2つ以上の問合せ(複合問合せ)結果から1つの結果を生成するものである。

◆文1:SELECT * FROM X; ・・・B A A C の4行を戻す
◆文2:SELECT * FROM Y; ・・・B C の2行を戻す

【集合演算子の機能と例】
集合演算子 機能 重複 ソート 集合演算結果 最終結果
文1
UNION
文2;
重複を含まない
全ての行
NO YES ①全ての行:B A A C B C
②ソート:A A B B C C
③重複を排除:A B C
A B C
文1
UNION ALL
文2
重複を含む全ての行 YES NO ①全ての行 B A A C B C
文1
INTERSECT
文2
両方の問合せによって
戻される重複を
含まない全ての行
NO YES ①両方の問合せで戻さ
れる全ての行:B C
②ソート:B C
③重複を排除:B C
B C
文1
MINUS
文2
文1と文2の結果の
差分で重複を含まない
全ての行
NO YES ①文1と文2の結果の
差分の全ての行:A A
②ソート:A A
③重複を排除:A
A
UNION ALL以外は重複処理、ソート処理を行う。
UNION ALLのみ重複処理、ソート処理を行わない。

【NULLの重複チェック】
◆NULLも1つの値として扱われる。
◆重複を排除する場合、複数のNULLは1つだけのNULLを戻す。
◆ソートの場合はNULLは無限大と等しい。


  • 8.2. 副問合せのSELECT句の規則
①データ型の種類の一致
各SELECT句の対応する列のデータ型の種類(文字列型、数値型、日付型など)は同じでなければならない。
×:CHAR(文字列型)とDATE(日付型)
○:CHAR(文字列型)とVARCHAR2(文字列型)

②選択する列の数
各SELECT句の選択リストの数は一致していないとエラーになる。

③列名
列名は異なっていても構わない。
【列名についての注意点】
◆1番目の問合せのSELECT句の列名または別名が、出力結果の列見出しとして使われる。
◆ORDER BY句に指定できる列名も、1番目の問合せのSELECT句の列名または列別名のみ。

④列のサイズ
列のサイズは異なっていても構わない。


  • 8.11 集合演算子の優先順位
  1. UNION、UNION ALL、INTERSECT、MINUSの優先順位は同じである。
  2. 左(上)から右(下)の順に評価される。
  3. カッコがあれば、カッコ内が優先される。