Oracle交集(intersect),並集(union union all ),差集(minus)區別
先建立2張表:
-- Create table
create table TEST_2021
(
A VARCHAR2(200),
B VARCHAR2(100),
C VARCHAR2(50)
);
-- Create table
create table TEST_2021
(
A VARCHAR2(200),
B VARCHAR2(100),
C VARCHAR2(50)
);
然後把以下資料插入test_2021:
INSERT INTO TEST_2021 (A,B) VALUES (1,'張三');
INSERT INTO TEST_2021 (A,B) VALUES (2,'李四');
INSERT INTO TEST_2021 (A,B) VALUES (3,'王五');
INSERT INTO TEST_2021 (A,B) VALUES (4,'趙六');
INSERT INTO TEST_2021 (A,B) VALUES (5,'錢八');
INSERT INTO TEST_2021 (A,B) VALUES (6,'李九');
INSERT INTO TEST_2021 (A,B) VALUES (7,'高十');
INSERT INTO TEST_2021 (A,B) VALUES (8,'笑十一');
然後把以下資料插入test_2021:
INSERT INTO TEST_2021 (A,B) VALUES (1,'張三');
INSERT INTO TEST_2021 (A,B) VALUES (2,'李四');
INSERT INTO TEST_2021(A,B) VALUES (3,'王五');
INSERT INTO TEST_2021 (A,B) VALUES (4,'趙六');
INSERT INTO TEST_2021 (A,B) VALUES (5,'錢八');
INSERT INTO TEST_2021 (A,B) VALUES (6,'李九');
INSERT INTO TEST_2021 (A,B) VALUES (7,'高十');
INSERT INTO TEST_2021 (A,B) VALUES (8,'笑十一');
INSERT INTO TEST_2021 (A,B) VALUES (9,'笑十二');
1、求交集( INTERSECT 用法)
然後比對資料:
select b from test_2021
INTERSECT
select b from test_2021;
結果:
高十
李九
李四
錢八
王五
笑十一
張三
趙六
2、並集(union union all)
然後比對資料:
select b from test_2021
union
select b from test_2021;
結果:
高十
李九
李四
錢八
王五
笑十二
笑十一
張三
趙六
然後比對資料:
select b from test_2021
union all
select b from test_2021;
結果(注意:union all 不會合並相同項):
張三
李四
王五
趙六
錢八
李九
高十
笑十一
笑十二
張三
李四
王五
趙六
錢八
李九
高十
笑十一
3、取差集(minus)
然後比對資料:
select b from test_2021
Minus
select b from test_2021;
結果:
笑十二