Nella gestione di database con SQL, esistono diverse funzioni che ci facilitano la manipolazione e il recupero efficiente dei dati. Due di queste, a cui sviluppatori e analisti di dati fanno spesso ricorso, sono la clausola UNION e l’operatore IN. Di seguito una guida completa sulle loro funzioni, le condizioni di utilizzo e la sintassi.
Clausola UNION
La clausola UNION è una clausola SQL utilizzata per combinare due o più risultati di istruzioni SELECT.
Per usare questa clausola non si possono unire tabelle a caso. Esistono regole precise da rispettare affinché la query non produca errori:
- Ogni istruzione SELECT combinata deve avere lo stesso numero di colonne.
- I tipi di dati delle colonne corrispondenti devono essere uguali o compatibili.
- Le colonne in ogni istruzione SELECT devono essere nello stesso ordine.
Per impostazione predefinita, la clausola UNION seleziona e mostra solo valori distinti. Ciò significa che il sistema filtra automaticamente i risultati, in modo che non si verifichi alcuna duplicazione dei dati.
Sintassi di UNION:
SQL
SELECT nome_colonna/e FROM tabella1
UNION
SELECT nome_colonna/e FROM tabella2;
Clausola UNION ALL
All’interno della famiglia UNION esiste anche una variante sintattica chiamata UNION ALL.
La differenza principale tra le due risiede nel modo in cui il sistema gestisce i dati duplicati. Mentre UNION elimina i duplicati, UNION ALL consente la duplicazione dei dati. Questa clausola mostra tutte le righe risultanti da ogni istruzione SELECT combinata, indipendentemente dalla presenza di valori esattamente identici.
Sintassi di UNION ALL:
SQL
SELECT nome_colonna/e FROM tabella1
UNION ALL
SELECT nome_colonna/e FROM tabella2;
Nota: L’uso di UNION ALL è solitamente più veloce rispetto a UNION semplice, perché il sistema di elaborazione non deve impiegare tempo aggiuntivo per analizzare e rimuovere le righe duplicate.
Operatore IN
L’operatore IN è un operatore logico aggiunto alla clausola WHERE per filtrare i dati in base a più possibili valori contemporaneamente.
Questo operatore è spesso considerato un metodo abbreviato per sostituire l’uso ripetuto dell’operatore OR quando si seleziona su più condizioni. L’impiego di IN rende il codice SQL molto più ordinato, conciso e facile da leggere.
Sintassi dell’operatore IN (con un elenco di valori specifici):
SQL
SELECT nome_colonna/e FROM nome_tabella
WHERE nome_colonna IN (valore1, valore2, …);
Sintassi dell’operatore IN (con sottoquery / istruzione SELECT):
Oltre a definire i valori manualmente, è possibile inserire un’altra istruzione SELECT tra parentesi per generare dinamicamente un elenco di valori.
SQL
SELECT nome_colonna/e FROM nome_tabella
WHERE nome_colonna IN (ISTRUZIONE_SELECT);






