クエリの結合
はじめに
クエリの結合とは、2つのクエリの出力結果を「和、差、積、の 3 種類の方法で結合すること」をいいます。
サブクリエに比べると考え方は単純ですが、注意しなければいけない点があります。
それは、それぞれのクエリから出力される列は比較可能なものでなければなりません。
要するに、 データ型 と 列数 が一致しなければ、クエリを結合することはできません。
その点を踏まえて、この章を進めて行きましょう!
Step1: 演算子の種類
演算子の種類と内容を表にしました。
演算子 | 内容 |
---|---|
UNION演算子 | 和結合 |
INTERSECT演算子 | 積結合 |
EXCEPT演算子 | 差結合 |
Step2 : UNION演算子
UNION演算子は、2つのクエリの出力結果の和集合を行います。
2つのクエリの出力結果を結合し、重複している行を削除します。
SELECT SubTotal FROM Order_detail WHERE SubTotal > 5000 UNION SELECT SubTotal FROM Order_detail WHERE SubTotal < 6000
小計が5000より大きい値を出力するクエリと、小計が6000より小さい値を出力するクエリの和結合を出力します。
Step3 : INTERSECT演算子
INTERSECT演算子は、2つのクエリの出力結果の積集合を行います。
2つのクエリの出力結果から同じものだけを出力します。
SELECT SubTotal FROM Order_detail WHERE SubTotal > 5000 INTERSECT SELECT SubTotal FROM Order_detail WHERE SubTotal < 6000
2つのクエリの出力結果の中で、同じものだけを出力します。
Step4 : EXCEPT演算子
EXCEPT演算子は、2つのクエリの出力結果の差集合を行います。
SELECT A.SubTotal FROM Order_detail A WHERE A.SubTotal > 5000 EXCEPT SELECT B.SubTotal FROM Order_detail B WHERE B.SubTotal < 6000
テーブルAの出力結果の内、テーブルBの出力結果に含まれないものを出力します。
テーブルAの出力結果は小計{5500,8000,12800}です。この中で小計{5500}はテーブルBの出力結果に含まれているので出力しませんでした。