SQLite - Clausola UNION

SQLite UNION la clausola / operatore viene utilizzata per combinare i risultati di due o più istruzioni SELECT senza restituire righe duplicate.

Per utilizzare UNION, ogni SELECT deve avere lo stesso numero di colonne selezionate, lo stesso numero di espressioni di colonna, lo stesso tipo di dati e devono avere lo stesso ordine, ma non devono essere della stessa lunghezza.

Sintassi

Di seguito è riportata la sintassi di base di UNION.

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

UNION

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

Qui la condizione data potrebbe essere qualsiasi espressione data in base alle tue esigenze.

Esempio

Considera le seguenti due tabelle, (a) tabella AZIENDA come segue:

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) Un'altra tabella è DEPARTMENT come segue:

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

Ora uniamo queste due tabelle usando l'istruzione SELECT insieme alla clausola UNION come segue:

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;

Questo produrrà il seguente risultato.

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

La clausola UNION ALL

L'operatore UNION ALL viene utilizzato per combinare i risultati di due istruzioni SELECT comprese le righe duplicate.

Le stesse regole che si applicano a UNION si applicano anche all'operatore UNION ALL.

Sintassi

Di seguito è riportata la sintassi di base di UNION ALL.

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

UNION ALL

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

Qui la condizione data potrebbe essere qualsiasi espressione data in base alle tue esigenze.

Esempio

Ora, uniamo le due tabelle sopra menzionate nella nostra istruzione SELECT come segue:

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;

Questo produrrà il seguente risultato.

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