OracleBronze 9章

集合演算子

複数の問合せの結果を1つにまとめることができます。
集合演算子を使った問い合わせのことを複合問合せといいます。

集合演算子 説明
UNION 2つの問合せ結果を連結し、重複した行を排除して戻す
UNION ALL 2つの問合せ結果を連結し、重複した行も含めて戻す
INTERSECT 2つの問合せ結果のうち、共通する行だけを戻す
MINUS 1つ目の問合せの結果のうち、2つ目の問合せ結果にない行を戻す

これ自体の意味はわかると思いますので、具体的に使い方をみていきましょう。
まずは基本構文

SELECT文1
{ UNION | UNION ALL … }
SELECT文2

UNION

2つの問合せ結果を連結し、重複した行を排除して戻します。

SELECT deptno, empno, ename
FROM EMPLOYEES
WHERE deptno IN(10, 20)
UNION
SELECT deptno, empno, ename 
FROM EMPLOYEES
WHERE deptno IN(20, 30);

また例によって無理やりなSELECT文ですが、まぁ理解はしやすいかもしれませんね。
SELECT文1でもSELECT文2でもdeptnoが20の部署の人たちがリストアップされますよね。でもUNIONなので、重複削除になるため一回しか表示されない。という結果になるので、自分で試してみましょう。

UNION ALL、INTERSECT、MINUSについてはもういいでしょう?
それぞれ例を考えて試してみてください。

集合演算子のガイドライン

いくつかルールというか、まぁガイドラインですか…があります。

例えば、、、
先の例文を見たらわかると思いますが、SELECT文1とSELECT文2のSELECT句の列や式の個数や型は揃えてないといけないよ。とかそういうのです。

多分使うときは、自分で調べながらやると思うので、ヒントだけ。

・複合問合せの引数と型
・複合問合せとORDER BY
・複合問合せとNULL値
・集合演算子の優先順位

これまでにも似たような講義はあったと思うので、もういいでしょう?笑