Oracle Database 10g入門 SQL基礎T 第7章補足

集合演算子とは

集合演算子とは

集合演算子とは、2つ以上の問い合わせ(SELECT文)の結果(集合)を比較し、比較した結果(集合)を表示する演算子である。

使い方

SELECT 〜 FROM ・・・
集合演算子
SELECT 〜 FROM ・・・

※1つ目のSELECT文の結果と2つ目のSELECT文を比較して、その結果を返す。

比較演算子の種類

演算子ベン図説明
UNION 2つの集合を連結し、重複行を省いた結果を返す
UNION ALL 2つの集合を連結した結果を返す。重複行も含まれる
INTERSECT 2つの集合を比較し、重複行のみを返すく
MINUS 1つ目の集合から、2つ目の集合と一致する行を削除した結果を返す

集合関数の使用例

用意するテーブル

【TBL1 : 7件】
IDNAME
1あんどう
2いのうえ
3うえすぎ
4えとう
5おぐり
6かめい
7きたやま
【TBL2 : 5件】
IDNAME
6かめい
7きたやま
8くりもと
9けむし
10こだま
CREATE TABLE tbl1 (id NUMBER, name VARCHAR2(20));
CREATE TABLE tbl2 (id NUMBER, name VARCHAR2(20));
INSERT INTO tbl1 VALUES (1, 'あんどう');
INSERT INTO tbl1 VALUES (2, 'いのうえ');
INSERT INTO tbl1 VALUES (3, 'うえすぎ');
INSERT INTO tbl1 VALUES (4, 'えとう');
INSERT INTO tbl1 VALUES (5, 'おぐり');
INSERT INTO tbl1 VALUES (6, 'かめい');
INSERT INTO tbl1 VALUES (7, 'きたやま');
INSERT INTO tbl2 VALUES (6, 'かめい');
INSERT INTO tbl2 VALUES (7, 'きたやま');
INSERT INTO tbl2 VALUES (8, 'くりもと');
INSERT INTO tbl2 VALUES (9, 'けむし');
INSERT INTO tbl2 VALUES (10, 'こだま');

UNIONの例

SELECT * FROM tbl1
UNION
SELECT * FROM tbl2
【TBL1+TBL2 : 10件】
IDNAME
1あんどう
2いのうえ
3うえすぎ
4えとう
5おぐり
6かめい
7きたやま
8くりもと
9けむし
10こだま

※id6と7が重複するが、ALLが付いていないので重複無しで表示される

UNION ALLの例

SELECT * FROM tbl1
UNION ALL
SELECT * FROM tbl2
【TBL1+TBL2 : 12件】
IDNAME
1あんどう
2いのうえ
3うえすぎ
4えとう
5おぐり
6かめい
7きたやま
6かめい
7きたやま
8くりもと
9けむし
10こだま

※重複があろうとなかろうと、問答無用で結合

INTERSECTの例

SELECT * FROM tbl1
INTERSECT
SELECT * FROM tbl2
【TBL1 AND TBL2 : 2件】
IDNAME
6かめい
7きたやま

※id6と7が重複するため、その結果だけが表示される。id6が2件、id7が2件の合計4件が表示されるわけではないことに注意!

MINUSの例

SELECT * FROM tbl1
MINUS
SELECT * FROM tbl2
【TBL1−TBL2 : 5件】
IDNAME
1あんどう
2いのうえ
3うえすぎ
4えとう
5おぐり

※id6と7が重複するので、1つ目のSELECT文から重複部分が削除されて表示される


[ TOP ]