MySQL UNIONE – Tutorial completo
Che cos'è un'unione?
Le unioni combinano i risultati di più query SELECT in un set di risultati consolidato.
L'unico requisito affinché funzioni è che il numero di colonne sia lo stesso per tutte le query SELECT che devono essere combinate.
Supponiamo di avere due tabelle come segue
Creiamo ora una query UNION per combinare entrambe le tabelle utilizzando DISTINCT
SELECT column1, column2 FROM `table1` UNION DISTINCT SELECT column1,column2 FROM `table2`;
Qui le righe duplicate vengono rimosse e vengono restituite solo righe univoche.
Nota: MySQL utilizza la clausola DISTINCT come impostazione predefinita durante l'esecuzione delle query UNION se non viene specificato nulla.
Creiamo ora una query UNION per combinare entrambe le tabelle utilizzando ALL
SELECT `column1`,` column1` FROM `table1` UNION ALL SELECT ` column1`,` column1` FROM `table2`;
Qui sono incluse le righe duplicate e poiché utilizziamo ALL.
Perché usare le unioni?
Supponiamo che ci sia un difetto nella progettazione del database e che si stiano utilizzando due tabelle diverse destinate allo stesso scopo. Si desidera consolidare queste due tabelle in una sola evitando che eventuali record duplicati si insinuino nella nuova tabella. In questi casi è possibile utilizzare UNION.
Sommario
- Il comando UNION viene utilizzato per combinare più risultati di query SELECT in un'unica query contenente righe di tutte le query di selezione.
- Il numero di colonne e tipi di dati nel file Istruzioni SELEZIONATE deve essere lo stesso affinché il comando UNION funzioni.
- La clausola DISTINCT viene utilizzata per eliminare i valori duplicati dal set di risultati della query UNION. MySQL utilizza la clausola DISTINCT come predefinita durante l'esecuzione delle query UNION se non viene specificato nulla.
- La clausola ALL viene utilizzata per restituire tutte, anche le righe duplicate nella query UNION.
Esempi pratici di utilizzo MySQL banco di lavoro
Nel nostro myFlixDB combiniamo
membership_number e full_names dalla tabella Membri
con
movie_id e titolo dalla tabella dei film
Possiamo usare la seguente query
SELECT `membership_number`,`full_names` FROM `members` UNION SELECT `movie_id`,`title` FROM `movies`;
Eseguendo lo script precedente in MySQL banco di lavoro rispetto a myflixdb ci fornisce i seguenti risultati mostrati di seguito.
membership_number | full_names |
---|---|
1 | Janet Jones |
2 | Janet Smith Jones |
3 | Robert Phil |
4 | Gloria Williams |
5 | Leonard Hofstadter |
6 | Sheldon Cooper |
7 | Rajesh Koothrappali |
8 | Leslie Winkle |
9 | Howard Wolowitz |
16 | 67% Guilty |
6 | Angels and Demons |
4 | Code Name Black |
5 | Daddy's Little Girls |
7 | Davinci Code |
2 | Forgetting Sarah Marshal |
9 | Honey mooners |
19 | movie 3 |
1 | Pirates of the Caribean 4 |
18 | sample movie |
17 | The Great Dictator |
3 | X-Men |