集合演算子
複数の問合せの結果を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値
・集合演算子の優先順位
これまでにも似たような講義はあったと思うので、もういいでしょう?笑