Durante la gestione dei dati nei database, spesso tendiamo a utilizzare gli operatori di insiemi in SQL, per recuperare i dati in base ai nostri requisiti combinando due o più istruzioni SELECT. In questo articolo su SQL UNION, parlerò dell'operatore UNION utilizzato per recuperare i dati nella seguente sequenza:
- Cos'è l'operatore SQL UNION?
- Sintassi:
- Sintassi UNION
- Sintassi UNION ALL
- Differenze tra UNION e UNION ALL
- Esempi SQL UNION:
- Esempio operatore UNION
- Esempio di operatore UNION ALL
- UNIONE con alias SQL
- UNIONE con clausola WHERE
- UNION ALL con clausola WHERE
- UNIONE con UNISCITI
- UNION ALL with JOINS
Iniziamo!
Cos'è l'operatore SQL UNION?
Come suggerisce il nome, questo operatore/ clausola viene utilizzato per combinare i risultati di due o più istruzioni SELECT. Qui ogni istruzione SELECT utilizzata all'interno dell'istruzione UNION deve avere lo stesso numero di colonne nello stesso ordine. Inoltre, tutte le colonne presenti nelle istruzioni SELECT devono avere tipi di dati simili.
La clausola UNION fornisce solo valori univoci come output. Per ogni evenienza, desideri duplicare i valori, devi utilizzare la clausola UNION ALL.
Proseguendo in questo articolo su SQL UNION, cerchiamo di capire la sintassi.
Sintassi SQL UNION
Sintassi UNION
SELECT Column1, Column2, Column3, ..., ColumnN FROM Table1 UNION SELECT Column1, Column2, Column3, ..., ColumnN FROM Table2;
Sintassi UNION ALL
SELECT Column1, Column2, Column3, ..., ColumnN FROM Table1 UNION ALL SELECT Column1, Column2, Column3, ..., ColumnN FROM Table2;
Andando avanti in questo articolo, cerchiamo di capire le differenze tra UNION e UNION ALL.
Differenze tra SQL UNION e UNION ALL
UNIONE | UNION ALL |
Combina due o più set di risultati e non mantiene i valori duplicati. | Combina due o più set di risultati e mantiene i valori duplicati. |
Syntax: UNION | Syntax: UNION ALL |
Successivamente, in questo articolo su SQL UNION, cerchiamo di comprendere i diversi modi di utilizzare questo operatore.
Esempi di SQL UNION e UNION ALL
Per la tua migliore comprensione, prenderò in considerazione le seguenti tabelle per mostrarti diversi esempi.
Tabella dei dipendenti
EmpID | Nome | EmpAge | Città | Codice postale | Paese |
1 | Emma | 23 | Berlino | 12109 | Germania |
2 | Rahul | 26 | Mumbai | 400015 | India |
3 | Aayra | 24 | New York | 10014 | Stati Uniti |
4 | Giovanni | 32 | Londra | E1 7AE | Regno Unito |
5 | Derek | 29 | New York | 10012 | Stati Uniti |
Tabella Progetti
ID progetto | Nome | Giorni lavorativi | Città | Codice postale | Paese |
1 | Progetto 1 | 10 | Berlino | 12109 | Germania |
2 | Progetto 2 | 7 | Mumbai | 400015 | India |
3 | Progetto 3 | 20 | Delhi | 110006 | India |
4 | Progetto 4 | 15 | Mumbai | 400015 | India |
5 | Progetto 5 | 28 | Berlino | 12109 | Germania |
Iniziamo con degli esempi.
Esempi SQL UNION
Esempio operatore UNION
Scrivi una query per recuperare città distinte dalla tabella Dipendenti e Progetti.
SELECT City FROM Employees UNION SELECT City FROM Projects ORDER BY City;
Risultato:
Città |
Berlino |
Delhi |
Londra |
Mumbai |
New York |
Esempio operatore UNION ALL
Scrivi una query per recuperare le città dalla tabella Dipendenti e Progetti. Qui devono essere inclusi valori duplicati.
SELECT City FROM Employees UNION ALL SELECT City FROM Projects ORDER BY City;
Risultato:
Città |
Berlino |
Berlino |
Berlino |
Delhi |
Londra |
Mumbai |
Mumbai
|
Mumbai |
New York |
New York |
In questo articolo, cerchiamo di capire come utilizzare la clausola UNION con gli alias SQL.
UNIONE con alias SQL
Gli alias SQL vengono utilizzati per assegnare un nome temporaneo a una tabella oa una colonna. Quindi, scriviamo una query per elencare tutti i dipendenti e i progetti unici.
SELECT 'Employee' AS Type, Name, City, Country FROM Employees UNION SELECT 'Project', Name, City, Country FROM Projects;
Risultato:
Tipo | Nome | Città | Paese |
Dipendente | Emma | Berlino | Germania |
Dipendente | Rahul | Mumbai | India |
Dipendente | Ayra | New York | Stati Uniti |
Dipendente | Giovanni | Londra | Regno Unito |
Dipendente | Derek | New York | Stati Uniti |
Progetto | Progetto 1 | Berlino | Germania |
Progetto | Progetto 2 | Mumbai | India |
Progetto | Progetto 3 | Delhi | India |
Progetto | Progetto 4 | Mumbai | India |
Progetto | Progetto 5 | Berlino | Germania |
UNIONE con clausola WHERE
Scrivi una query per recuperare le città indiane distinte e i relativi codici postali dalla tabella Dipendenti e Progetti.
SELECT City, PostalCode, Country FROM Employees WHERE Country='India' UNION SELECT City, PostalCode, Country FROM Projects WHERE Country='India' ORDER BY City;
Risultato:
Città | Codice postale | Paese |
Delhi | 110006 | India |
Mumbai | 400015 | India |
UNION ALL con clausola WHERE
Scrivi una query per recuperare le città indiane e i relativi codici postali dalla tabella Dipendenti e Progetti, dove sono consentiti valori duplicati
SELECT City, PostalCode, Country FROM Employees WHERE Country='India' UNION ALL SELECT City, PostalCode, Country FROM Projects WHERE Country='India' ORDER BY City;
Risultato:
Città | Codice postale | Paese |
Delhi | 110006 | India |
Mumbai | 400015 | India |
Mumbai | 400015 | India |
Mumbai | 400015 | India |
Andando avanti in questo articolo, cerchiamo di capire come utilizzare le clausole UNION e UNION ALL con JOINS. I JOINS in SQL sono comandi utilizzati per combinare righe di due o più tabelle, in base a una colonna correlata tra quelle tabelle.
UNIONE con UNISCITI
L'operatore SQL UNION può essere utilizzato con SQL JOINS per recuperare dati da due tabelle diverse. Considererò la tabella seguente insieme alla tabella Impiegati per l'esempio.
Tabella ProjectDetails
PID | Giorni lavorativi | EmpID | Costo per progetto |
11 | 12 | 4 | 20000 |
22 | 16 | 3 | 35000 |
33 | 30 | 1 | 60000 |
44 | 25 | 3 | 45000 |
55 | 21 | 1 | 50000 |
SELECT EmpID, Name, CostforProject FROM Employees LEFT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID UNION SELECT EmpID, Name, CostforProject FROM Employees RIGHT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID;
Risultato:
EmpID | Nome | Costo per progetto |
1 | Emma | 60000 |
1 | Emma | 50000 |
2 | Rahul | NULL |
3 | Ayra | 35000 |
3 | Ayra | 45000 |
4 | Giovanni | 20000 |
5 | Derek | NULL |
UNION ALL con UNISCITI
Scrivi una query per recuperare EmpID, Name e CostforProject dalla tabella Employees e ProjectDetails, dove sono consentiti valori duplicati.
SELECT EmpID, Name, CostforProject FROM Employees LEFT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID UNION ALL SELECT EmpID, Name, CostforProject FROM Employees RIGHT JOIN ProjectDetails ON Employees.EmpID = ProjectDetails.EmpID;
Risultato:
EmpID | Nome | Costo per progetto |
1 | Emma | 60000 |
1 | Emma | 50000 |
2 | Rahul | NULL |
3 | Ayra | 35000 |
3 | Ayra | 45000 |
4 | Giovanni | 20000 |
5 | Derek | NULL |
4 | Giovanni | 20000 |
3 | Ayra | 35000 |
1 | Emma | 60000 |
3 | Ayra | 35000 |
1 | Emma | 50000 |
Con questo, arrivo alla fine di questo articolo su SQL UNION. Spero che ti sia piaciuto leggere questo articolo su SQL UNION. Abbiamo visto i diversi modi di utilizzare i comandi UNION e UNION ALL per aiutarti a scrivere query. Se desideri saperne di più su MySQL e conoscere questo database relazionale open source, dai un'occhiata al nostro DBA MySQL Formazione per la certificazione che viene fornito con una formazione dal vivo con istruttore e un'esperienza di progetto nella vita reale. Questa formazione ti aiuterà a comprendere in modo approfondito MySQL e a raggiungere la padronanza dell'argomento.
Hai una domanda per noi? Per favore menzionalo nella sezione commenti di "SQL UNION" e ti risponderò.