PLSQL - 使用 MINUS 與 INTERSECT 來比對兩個資料表中的資料

摘要:PLSQL - 使用 MINUS 與 INTERSECT 來比對兩個資料表中的資料

在<SQL - 使用 EXCEPT 與 INTERSECT 來比對兩個資料表中的資料>這篇講到,如何使用 MS SQL 提供的 EXCEPT 與 INTERSECT 來比對兩個資料表中的資料。那麼在 Oracle 中,是否有提供這樣的指令呢!? 答案是有的,那就是「MINUS」與「INTERSECT」,其中「INTERSECT」這個指令還真眼熟,其功能與MS SQL是一樣的,而另外一個「MINUS」是與「EXCEPT」功能相同的,以下還是用一個簡單的範例來實作看看嚕...

步驟一:建立兩個名為「DC_TEST_1」與「DC_TEST_2」的資料表

資料表名稱:DC_TEST_1
欄位:U_NO(number)、USER_NAME(varchar(20))

資料表名稱:DC_TEST_2
欄位:U_NO(number)、USER_NAME(varchar(20))

步驟二:各別新增資料

資料表名稱:DC_TEST_1

Insert ALL
into dcms.dc_test_1(U_NO, USER_NAME) values(1, 'Danny_Chang_1')
into dcms.dc_test_1(U_NO, USER_NAME) values(2, 'Danny_Chang_2')
into dcms.dc_test_1(U_NO, USER_NAME) values(3, 'Danny_Chang_3')
into dcms.dc_test_1(U_NO, USER_NAME) values(4, 'Danny_Chang_4')
into dcms.dc_test_1(U_NO, USER_NAME) values(5, 'Danny_Chang_5')
SELECT * FROM DUAL;

資料表名稱:DC_TEST_2

Insert ALL
into dcms.dc_test_2 values(1, 'Danny_Chang_1')
into dcms.dc_test_2 values(4, 'Danny_Chang_4')
into dcms.dc_test_2 values(5, 'Danny_Chang_5')
SELECT * FROM DUAL;

步驟三:使用 MINUS 與 INTERSECT 來比對兩個資料表中的資料

MINUS:

Select * From dcms.dc_test_1
MINUS
Select * From dcms.dc_test_2;



INTERSECT:

Select * From dcms.dc_test_1
INTERSECT
Select * From dcms.dc_test_2;



參考:
The UNION [ALL], INTERSECT, MINUS Operators
Oracle Insert Statements