關鍵字: 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...