Oracle 取兩個表中資料的交集並集差異集合

2021-06-25 23:03:24 字數 1285 閱讀 3633



關鍵字: oracle 取兩個表中資料的交集intersect

oracle 作為乙個大型的關聯式資料庫,日常應用中往往需要提取兩個表的交集資料

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

employee

code

name

gender

001tom

m002

jerry

m003

anaf

salary

code

salary

0012800

0022500

0033000

方法1:利用操作符intersect

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

select code from employee where gender = 'm'

intersect

select code from salary where salary > 2500

第一條sql的結果為

code

----------

001002

第二條sql的結果為

code

----------

001003

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

oracle 中 取兩個表的交集 差集的問題

1 intersect運算 返回查詢結果中相同的部分既他們的交集 sql select from abc 2 intersect 3 select from abc2 2 minus運算 返回在第乙個查詢結果中與第二個查詢結果不相同的那部分行記錄,即兩個結果的差集 sql select from a...

oracle 中 取兩個表的交集 差集的問題

1 intersect運算 返回查詢結果中相同的部分既他們的交集 sql select from abc 2 intersect 3 select from abc2 2 minus運算 返回在第乙個查詢結果中與第二個查詢結果不相同的那部分行記錄,即兩個結果的差集 sql select from a...

oracle兩個表資料同步備份

這段時間做sqoop2資料匯出,需要先將資料匯入到中間表,然後將中間表的資料同步到目的表,中間表和目的表字段完全一樣,只是表的名稱不一致。方式一 觸發器 觸發器 是乙個與表相關聯的 儲存的pl sql程式。每當乙個特定的資料操作語句 insert,update,delete 在指定的表上發出時,or...