和union all
的重要的區別關於對重複結果的處理。
union
在合併子查詢重複的記錄只保留一條,而
union all
並不合併子查詢的重覆記錄。現舉例說明它們之間的區別。
示例1:查詢職位為『clerk』員工資訊。
sql> select empno,ename,job deptno from emp where job='clerk';
empno ename deptno
---------- ---------- ---------
7369 smith clerk
7876 adams clerk
7900 james clerk
7934 miller clerk
示例2:查詢部門編號為20員工資訊。
sql> select empno,ename,job deptno from emp where deptno=20;
empno ename deptno
---------- ---------- ---------
7369 smith clerk
7566 jones manager
7788 scott analyst
7876 adams clerk
7902 ford analyst
示例3:使用
union all
合併示例1和示例2的子查詢。
sql> select empno,ename,job deptno from emp where job='clerk'
2 union all
3 select empno,ename,job deptno from emp where deptno=20;
empno ename deptno
---------- ---------- ---------
7369 smith clerk
7876 adams clerk
7900 james clerk
7934 miller clerk
7369 smith clerk
7566 jones manager
7788 scott analyst
7876 adams clerk
7902 ford analyst
已選擇9行。
示例4:使用
union
合併示例1和示例2的子查詢。
sql> select empno,ename,job deptno from emp where job='clerk'
2 union
3 select empno,ename,job deptno from emp where deptno=20;
empno ename deptno
---------- ---------- ---------
7369 smith clerk
7566 jones manager
7788 scott analyst
7876 adams clerk
7900 james clerk
7902 ford analyst
7934 miller clerk
已選擇7行。
從示例4可以看到union合併後記錄資料比使用union all少了2條。很顯然使用union查詢合併了兩個子查詢的重複的記錄。
SQL中UNION與UNIONALL的區別
sqlserver2000中 union與 unionall的 區別union運算子 將兩個或更多查詢的結果組合為單個結果集,該結果集包含聯合查詢中的所有查詢的全部行。這與使用聯接組合兩個表中的列不同。使用union組合兩個查詢的結果集的兩個基本規則是 所有查詢中的列數和列的順序必須相同。資料型別必...
SQL中Union和Union All的用法
union 操作符 union 操作符用於合併兩個或多個 select 語句的結果集,請注意,union 內部的 select 語句必須擁有 相同數量的列,列也必須擁有 相似的資料型別,同時,每條 select 語句中的列的 順序必須相同。union跟 join 有些許類似,因為這兩個指令都可以由多...
SQL中UNION和UNION ALL的詳細用法
在開發中,有些資料的儲存可能涉及到分庫分表,查詢的時候,可能需要查詢所有的分表,這個時候,就需要用到union或者union all,下面介紹一下union的用法以及與union all的區別 union操作符用於合併兩個或多個select語句的結果集,這裡需要注意的是 union內部的select...