oracle取差值集合
生活随笔
收集整理的這篇文章主要介紹了
oracle取差值集合
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Oracle Minus關鍵字
SQL中的MINUS關鍵字
SQL中有一個MINUS關鍵字,它運用在兩個SQL語句上,它先找出第一條SQL語句所產生的結果,然后看這些結果有沒有在第二個SQL語句的結果中。如果有的話,那這一筆記錄就被去除,而不會在最后的結果中出現。如果第二個SQL語句所產生的結果并沒有存在于第一個SQL語句所產生的結果內,那這筆資料就被拋棄,其語法如下:
[SQL Segment 1]
MINUS
[SQL Segment 2]
--------------------------------------------
//創(chuàng)建表1
create table test1 ( name varchar(10), sex varchar(10), );insert into test1 values('test','female'); insert into test1 values('test1','female'); insert into test1 values('test1','female'); insert into test1 values('test11','female'); insert into test1 values('test111','female');
//創(chuàng)建表2
create table test2 ( name varchar(10), sex varchar(10), ); insert into test1 values('test','female'); insert into test1 values('test2','female'); insert into test1 values('test2','female'); insert into test1 values('test22','female'); insert into test1 values('test222','female');
------------------------------------------- select * from test1 minus select * from test2;結果:NAME SEX ---------- ---------- test1 female test11 female test111 female -----------------------------------------------------------select * from test2 minus select * from test1;結果:NAME SEX ---------- ---------- test2 female test22 female test222 female
結論:Minus返回的總是左邊表中的數據,它返回的是差集。注意:minus有剃重作用
==========================================================
下面是我做的實驗,很明顯能夠看出MINUS的效率,made_order共23萬筆記錄,charge_detail共17萬筆記錄
性能比較:
SELECT order_id FROM made_orderMINUSSELECT order_id FROM charge_detail1.14 secSELECT a.order_id FROM made_order aWHERE NOT exists (SELECT order_idFROM charge_detailWHERE order_id = a.order_id)18.19 secSELECT order_id FROM made_orderWHERE order_id NOT in (SELECT order_idFROM charge_detail)20.05 sec
還有其它一下關鍵字:
INTERSECT (交集)
UNION ALL 并集
轉載于:https://www.cnblogs.com/Kconnie/p/3968269.html
總結
以上是生活随笔為你收集整理的oracle取差值集合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 客快物流大数据项目(三):项目解决方案
- 下一篇: 大数据项目实践