UNION
Sintassi
SELECT ... UNION [ALL | DISTINCT] SELECT ... [UNION [ALL | DISTINCT] SELECT ...] [ORDER BY [colonna [, colonna ...]]] [LIMIT {[scarto,] num_righe | num_righe OFFSET scarto}]
Spiegazione
UNION
combina i risultati di più istruzioni SELECT
in un solo insieme di risultati.
I nomi delle colonne della prima SELECT
sono usati come nomi per tutto l'insieme dei risultati. Le colonne selezionate elencate nelle posizioni corrispondenti delle SELECT
successive dovrebbero avere gli stessi tipi di dati. Per esempio, la prima colonna selezionata nella prima istruzione dovrebbe essere dello stesso tipo della prima colonna selezionata nelle altre istruzioni.
La parola chiave ALL
fa sì che le righe duplicate siano preservate. La parola chiave DISTINCT
fa sì che le righe duplicate vengano rimosse dall'insieme dei risultati. Questo è anche il comportamento di default.
Le clausole ORDER BY
e LIMIT
Le singole select possono contenere le loro clausole ORDER BY
e LIMIT
. In questo caso, le singole query devono essere racchiuse tra parentesi. Tuttavia questo non influenza l'ordine delle righe della UNION
complessiva, perciò possono essere utilizzate solo per limitare il numero di righe estratte da una SELECT
.
La UNION
può avere clausole ORDER BY
e LIMIT
globali, che hanno effetto sull'intero insieme dei risultati. Se le colonne restituite dalle istruzioni SELECT
hanno degli alias (AS
), la ORDER BY
deve usare quegli alias, non i veri nomi delle colonne.
Esempi
Ecco come definire l'ordine globale della UNION
e limitare le righe totali:
(SELECT e_name AS name, email FROM employees) UNION (SELECT c_name AS name, email FROM customers) ORDER BY name LIMIT 10;