Operatore UNION e UNION ALL in SQL

Operatore UNION in SQL

L'operatore UNION viene utilizzato per unire i risultati di due o più clausole SELECT.

Si prega di notare che la clausola SELECT interna di UNION deve avere un numero di colonne identico. Le colonne devono anche avere tipi di dati simili. Inoltre, l'ordine delle colonne in ogni clausola SELECT deve essere lo stesso.

Sintassi SQL UNION

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

Nota:Per impostazione predefinita, l'operatore UNION seleziona valori diversi. Se si permettono valori ripetuti, utilizzare UNION ALL.

Sintassi SQL UNION ALL

SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

Inoltre, i nomi delle colonne nella risultati di UNION sono sempre uguali ai nomi delle colonne nella prima istruzione SELECT di UNION.

Esempio originale utilizzato negli esempi di seguito:

Employees_China:

E_ID E_Name
01 Zhang, Hua
02 Wang, Wei
03 Carter, Thomas
04 Yang, Ming

Employees_USA:

E_ID E_Name
01 Adams, John
02 Bush, George
03 Carter, Thomas
04 Gates, Bill

Utilizzo dell'istruzione UNION

Esempio

Elenca tutti i nomi dei dipendenti diversi in Cina e negli Stati Uniti:

SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA

Risultato

E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Gates, Bill

Nota:Questa istruzione non può elencare tutti i dipendenti in Cina e negli Stati Uniti. Negli esempi precedenti, ci sono due dipendenti con lo stesso nome, ma solo uno è stato elencato. L'istruzione UNION选取不同的值.

UNION ALL

L'istruzione UNION ALL e l'istruzione UNION sono quasi equivalenti, ma l'istruzione UNION ALL elenca tutti i valori.

SQL Statement 1
UNION ALL
SQL Statement 2

Utilizzo dell'istruzione UNION ALL

Esempio:

Elenca tutti i dipendenti in Cina e negli Stati Uniti:

SELECT E_Name FROM Employees_China
UNION ALL
SELECT E_Name FROM Employees_USA

Risultato

E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Carter, Thomas
Gates, Bill