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

MySQL UNIONMySQL UNION

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.

Unione-distinta

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.

Unione-Tutti

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