SQLite - UNION 子句

  • 简述

    SQLite UNION 子句/运算符用于组合两个或多个 SELECT 语句的结果而不返回任何重复的行。
    要使用 UNION,每个 SELECT 必须选择相同数量的列、相同数量的列表达式、相同的数据类型,并且它们的顺序相同,但它们的长度不必相同。

    句法

    以下是基本语法 UNION.
    
    SELECT column1 [, column2 ]
    FROM table1 [, table2 ]
    [WHERE condition]
    UNION
    SELECT column1 [, column2 ]
    FROM table1 [, table2 ]
    [WHERE condition]
    
    这里给定的条件可以是基于您的要求的任何给定表达式。

    例子

    考虑以下两个表,(a) COMPANY表如下 -
    
    sqlite> select * from COMPANY;
    ID          NAME                  AGE         ADDRESS     SALARY
    ----------  --------------------  ----------  ----------  ----------
    1           Paul                  32          California  20000.0
    2           Allen                 25          Texas       15000.0
    3           Teddy                 23          Norway      20000.0
    4           Mark                  25          Rich-Mond   65000.0
    5           David                 27          Texas       85000.0
    6           Kim                   22          South-Hall  45000.0
    7           James                 24          Houston     10000.0
    
    (b) 另一个表是DEPARTMENT,如下所示 -
    
    ID          DEPT                  EMP_ID
    ----------  --------------------  ----------
    1           IT Billing            1
    2           Engineering           2
    3           Finance               7
    4           Engineering           3
    5           Finance               4
    6           Engineering           5
    7           Finance               6
    
    现在让我们使用 SELECT 语句和 UNION 子句连接这两个表,如下所示 -
    
    sqlite>  SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
             ON COMPANY.ID = DEPARTMENT.EMP_ID
             
             UNION
             
             SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
             ON COMPANY.ID = DEPARTMENT.EMP_ID;
    
    这将产生以下结果。
    
    EMP_ID      NAME                  DEPT
    ----------  --------------------  ----------
    1           Paul                  IT Billing
    2           Allen                 Engineering
    3           Teddy                 Engineering
    4           Mark                  Finance
    5           David                 Engineering
    6           Kim                   Finance
    7           James                 Finance
    
  • UNION ALL 条款

    UNION ALL 运算符用于组合包括重复行在内的两个 SELECT 语句的结果。
    适用于 UNION 的相同规则也适用于 UNION ALL 运算符。

    句法

    以下是基本语法 UNION ALL.
    
    SELECT column1 [, column2 ]
    FROM table1 [, table2 ]
    [WHERE condition]
    UNION ALL
    SELECT column1 [, column2 ]
    FROM table1 [, table2 ]
    [WHERE condition]
    
    这里给定的条件可以是基于您的要求的任何给定表达式。

    例子

    现在,让我们在 SELECT 语句中加入上述两个表,如下所示 -
    
    sqlite>  SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT
             ON COMPANY.ID = DEPARTMENT.EMP_ID
             
             UNION ALL
             SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT
             ON COMPANY.ID = DEPARTMENT.EMP_ID;
    
    这将产生以下结果。
    
    EMP_ID      NAME                  DEPT
    ----------  --------------------  ----------
    1           Paul                  IT Billing
    2           Allen                 Engineering
    3           Teddy                 Engineering
    4           Mark                  Finance
    5           David                 Engineering
    6           Kim                   Finance
    7           James                 Finance
    1           Paul                  IT Billing
    2           Allen                 Engineering
    3           Teddy                 Engineering
    4           Mark                  Finance
    5           David                 Engineering
    6           Kim                   Finance
    7           James                 Finance