SQLite Cláusulas UNION

de SQLiteUNIONLa cláusula/operador se usa para combinar los resultados de dos o más sentencias SELECT, sin devolver filas duplicadas.

Para usar UNION, el número de columnas seleccionadas en cada SELECT debe ser el mismo, con el mismo número de expresiones de columna, los mismos tipos de datos, y asegurarse de que tengan el mismo orden, pero no necesitan tener la misma longitud.

Sintaxis

UNIONLa sintaxis básica es la siguiente:

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

UNION

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

Aquí la condición dada puede ser cualquier expresión, según sea necesario.

Ejemplos

Supongamos que tenemos las siguientes dos tablas: (1) la tabla COMPANY se muestra a continuación:

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

(2) La otra tabla es DEPARTMENT, como se muestra a continuación:

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

Ahora, usemos la sentencia SELECT con la cláusula UNION para combinar las dos tablas, como se muestra a continuación:

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;

Esto producirá el siguiente resultado:

EMP_ID      NAME                  DEPT
----------  --------------------  ----------
1           Paul                  IT Billing
2           Allen                 Engineerin
3           Teddy                 Engineerin
4           Mark                  Finance
5           David                 Engineerin
6           Kim                   Finance
7           James                 Finance

Cláusula UNION ALL

El operador UNION ALL se usa para combinar los resultados de dos sentencias SELECT, incluyendo filas duplicadas.

Las reglas aplicables a UNION también se aplican al operador UNION ALL.

Sintaxis

UNION ALLLa sintaxis básica es la siguiente:

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

UNION ALL

SELECT column1 [, column2 ]
FROM table1 [, table2 ]
[WHERE condition]

Aquí la condición dada puede ser cualquier expresión, según sea necesario.

Ejemplos

Ahora, usemos la sentencia SELECT con la cláusula UNION ALL para combinar las dos tablas, como se muestra a continuación:

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;

Esto producirá el siguiente resultado:

EMP_ID      NAME                  DEPT
----------  --------------------  ----------
1           Paul                  IT Billing
2           Allen                 Engineerin
3           Teddy                 Engineerin
4           Mark                  Finance
5           David                 Engineerin
6           Kim                   Finance
7           James                 Finance
1           Paul                  IT Billing
2           Allen                 Engineerin
3           Teddy                 Engineerin
4           Mark                  Finance
5           David                 Engineerin
6           Kim                   Finance
7           James                 Finance
Otras extensiones