SQL查詢中的UNION ALL和UNION區別

UNION和UNION ALL的重要的區別關於對重複結果的處理。code

  UNION在合併子查詢重複的記錄只保留一條,而UNION All並不合併子查詢的重複記錄。現舉例說明它們之間的區別。blog

示例1:查詢職位爲‘CLERK’員工信息。get

SQL> SELECT EMPNO,ENAME,JOB DEPTNO FROM EMP WHERE JOB='CLERK';table

 

     EMPNO ENAME      DEPTNOim

---------- ---------- ---------數據

      7369 SMITH      CLERK查詢

      7876 ADAMS      CLERKimg

      7900 JAMES      CLERKtab

      7934 MILLER     CLERKco

示例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查詢合併了兩個子查詢的重複的記錄。

相關文章
相關標籤/搜索