English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo tutorial, imparerai come combinare i risultati di due o più query SQL.
L'operatore UNION viene utilizzato per combinare i risultati di due o più query SELECT in un unico insieme di risultati. L'operazione UNION è diversa dalla connessione che combina le colonne di due tabelle. L'operatore UNION mette tutte le righe delle due tabelle sorgenti in un unico tavolo di risultati, creando così una nuova tabella.
Ecco le regole di base per combinare i risultati di due query SELECT utilizzando UNION:
Nel caso di tutte le query, il numero e l'ordine delle colonne devono essere identici.
Il tipo di dati delle colonne corrispondenti deve essere compatibile.
Quando si soddisfano queste condizioni, queste tabelle sono compatibili per l'unione (union-compatible):
La sintassi di base di UNION:
SELECT column_list FROM table1_name UNION SELECT column_list FROM table2_name;
Per comprendere meglio l'operazione di unione, supponiamo che nelle tabelle employees e customers esistano alcuni campi ipotetici, ad esempio first_name e last_name. Si prega di notare che questi campi non esistono effettivamente nelle tabelle del nostro database di esempio.
+----+------------+-----------+--------+ | id | first_name | last_name | salary | +----+------------+-----------+--------+ | 1 | Ethan | Hunt | 5000 | | 2 | Tony | Montana | 6500 | | 3 | Sarah | Connor | 8000 | | 4 | Rick | Deckard | 7200 | | 5 | Martin | Blank | 5600 | +----+------------+-----------+--------+ | +----+------------+-----------+----------+ | id | first_name | last_name | city | +----+------------+-----------+----------+ | 1 | Maria | Anders | Berlin | | 2 | Fran | Wilson | Madrid | | 3 | Dominique | Perrier | Paris | | 4 | Martin | Blank | Turin | | 5 | Thomas | Hardy | Portland | +----+------------+-----------+----------+ | |
Tabella: employees | Tabella: customers |
Eseguiamo l'operazione di unione per combinare i risultati delle due query.
La seguente istruzione restituisce i nomi e cognomi di tutti i clienti e dipendenti:
SELECT first_name, last_name FROM employees UNION SELECT first_name, last_name FROM customers;
Esegui la seguente istruzione e il risultato sarà come segue:
+---------------+--------------+ | first_name | last_name | +---------------+--------------+ | Ethan | Hunt | | Tony | Montana | | Sarah | Connor | | Rick | Deckard | | Martin | Blank | | Maria | Anders | | Fran | Wilson | | Dominique | Perrier | | Thomas | Hardy | +---------------+--------------+
Per impostazione predefinita, l'operatore UNION elimina le righe duplicate dal risultato combinato. Ecco perché la query precedente restituisce solo 9 righe, se avete notato che il nome 'Martin Blank' appare contemporaneamente nei tavoli employees e customers.
Ma, se si desidera conservare le righe duplicate, è possibile utilizzare la parola chiave ALL, come segue:
SELECT first_name, last_name FROM employees UNION ALL SELECT first_name, last_name FROM customers;