Oracle 取兩個表中數據的交集並集差異集合


Oracle 取兩個表中數據的交集

關鍵字: Oracle 取兩個表中數據的交集 INTERSECT

Oracle 作為一個大型的關系數據庫,日常應用中往往需要提取兩個表的交集數據

例如現有如下表,要求找出工資2500(不含2500)以上並且是男性(M)的員工編號,那么就要利用這兩個表的關系做一個交集了

 

employee

CODE

NAME

GENDER

001 Tom M
002 Jerry M
003 Ana F

 

salary

CODE

SALARY

001 2800
002 2500
003 3000

方法1:利用操作符INTERSECT

INTERSECT 操作符用來合並兩個查詢,返回兩個查詢中都存在的記錄,即返回兩個查詢結果的交集,前提是兩個查詢的列的數量和數據類型必須完全相同。

SELECT CODE FROM EMPLOYEE WHERE GENDER = 'M'
INTERSECT
SELECT CODE FROM SALARY WHERE SALARY > 2500

第一條SQL的結果為

CODE
----------
001
002

第二條SQL的結果為

CODE
----------
001
003

INTERSECT的結果

CODE
----------
001

方法2:利用關系SQL

SELECT A.CODE FROM EMPLOYEE A, SALARY B
WHERE A.CODE = B.CODE AND A.GENDER = 'M' AND B.SALARY > 2500

結果為

CODE
----------
001

以上兩種方法是本人比較常用的方法,尤其第二種,充分體現關系數據的精髓所在。但如果兩個表結構比較復雜,而且關系條件也比較難實現的話,第一種顯然能夠簡單地得到需要的結果,也不失為一種好方法。

差異集合: minus

並集,並排除重復記錄:union

並集,並包含重復記錄:union all

轉自:http://blog.sina.com.cn/s/blog_5656bf3e010007cz.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM