union和union all的區別
Union因為要進行重複值掃描,所以效率低。如果合併沒有刻意要刪除重複行,那麼就使用Union All
兩個要聯合的SQL語句 欄位個數必須一樣,而且欄位型別要“相容”(一致);
如果我們需要將兩個select語句的結果作為一個整體顯示出來,我們就需要用到union或者union all關鍵字。union(或稱為聯合)的作用是將多個結果合併在一起顯示出來。
union和union all的區別是,union會自動壓縮多個結果集合中的重複結果,而union all則將所有的結果全部顯示出來,不管是不是重複。
Union:對兩個結果集進行並集操作,不包括重複行,同時進行預設規則的排序;
Union All:對兩個結果集進行並集操作,包括重複行,不進行排序;
Intersect:對兩個結果集進行交集操作,不包括重複行,同時進行預設規則的排序;
Minus:對兩個結果集進行差操作,不包括重複行,同時進行預設規則的排序。
可以在最後一個結果集中指定Order by子句改變排序方式。
例如:
select employee_id,job_id from employees
union
select employee_id,job_id from job_history
以上將兩個表的結果聯合在一起。這兩個例子會將兩個select語句的結果中的重複值進行壓縮,也就是結果的資料並不是兩條結果的條數的和。如果希望即使重複的結果顯示出來可以使用union all,例如:
2.在oracle的scott使用者中有表emp
select * from emp where deptno >= 20
union all
select * from emp where deptno <= 30
這裡的結果就有很多重複值了。
有關union和union all關鍵字需要注意的問題是:
union 和 union all都可以將多個結果集合並,而不僅僅是兩個,你可以將多個結果集串起來。
使用union和union all必須保證各個select 集合的結果有相同個數的列,並且每個列的型別是一樣的。但列名則不一定需要相同,oracle會將第一個結果的列名作為結果集的列名。例如下面是一個例子:
select empno,ename from emp
union
select deptno,dname from dept
我們沒有必要在每一個select結果集中使用order by子句來進行排序,我們可以在最後使用一條order by來對整個結果進行排序。例如:
select empno,ename from emp
union
select deptno,dname from dept
order by ename;
相關文章
- union all和union的區別
- sql中UNION和UNION ALL的區別SQL
- Union與Union All的區別
- 【SQL】UNION ALL 與UNION 的區別SQL
- Union和Union All到底有什麼區別
- sql中union和union allSQL
- sql中union和union all的用法SQL
- SQL UNION 和 UNION ALL 操作符SQL
- SQL Union和SQL Union All用法(轉)SQL
- oracle知識整理(1) union和union all的區別,left join和right join的區別(各種join的區別)Oracle
- Oracle中的Union、Union All、Intersect、MinusOracle
- 理解full outer jion,union,union all
- SQL UNION 操作符 和 UNION ALL 操作符SQL
- msyql jion 和 union 的區別
- MySQL學習(五) UNION與UNION ALLMySql
- 查詢集合操作union與union all
- ORACLE中union/union all/Intersect/Minus用法Oracle
- Struct 和 Union有下列區別Struct
- sql_union all_列別名SQL
- Oracle 中Union、Union All、Intersect、Minus(並,交,差)Oracle
- Oracle的集合操作(union、union all、intersect、minus集合函式)Oracle函式
- 表連線 join和(+)、union和uion allUI
- union, struct, enum 的 大小區別Struct
- union all 最佳化案例
- sql_intersect交集_minus差集_並集union_union allSQL
- Oracle union all 不走索引的優化Oracle索引優化
- MYSQL學習筆記24: 多表查詢(聯合查詢,Union, Union All)MySql筆記
- C++ 結構體struct和共同體union的區別C++結構體Struct
- UNION效率比UNION ALL效率高——SQL優化之Everything is possibleSQL優化
- 【轉】UNION效率比UNION ALL效率高——SQL優化之Everything is possibleSQL優化
- union用法
- MYSQL merge union merge sort_union 的不同MySql
- 【FULL OUTER JOIN】全外連線的union all改寫方法
- struct和union和enum宣告的語法Struct
- 透過union all把sql查詢的結果拼接起來SQL
- SQLite語句(三):JOIN和UNIONSQLite
- MySQL中使用or、in與union all在查詢命令下的效率對比MySql
- 基於UNION ALL的分頁查詢執行計劃問題