Combinare le tabelle con UNION, INTERSECT ed EXCEPT
Con le operazioni standard UNION, INTERSECT ed EXCEPT/MINUS, è possibile combinare i risultati di due o più istruzioni SELECT per costruire query più complesse.
Netezza Performance Server supporta tre classi di operazioni di set:
- UNION [DISTINCT] e UNION ALL
- INTERSECT [DISTINCT] e INTERSECT ALL
- ECCEZIONE [DISTINTO] o MENO [DISTINTO] e ECCEZIONE TUTTI, MENO TUTTI
Le istruzioni SQL che contengono operatori di set sono chiamate query composte e ogni istruzione SELECT in una query composta è chiamata query componente. È possibile combinare due o più istruzioni SELECT in una query composta se soddisfano le seguenti condizioni di compatibilità di unione:
- Gli insiemi di risultati di entrambe le query devono avere lo stesso numero di colonne.
- Le colonne corrispondenti nelle due query devono avere lo stesso tipo di dati o devono essere implicitamente convertibili nello stesso tipo di dati.
Ad esempio, è possibile che una colonna della prima query componente sia di tipo CHAR e corrisponda alla colonna VARCHAR della seconda query componente o viceversa. Tuttavia, non è possibile avere una colonna nel primo componente che sia una DATE e la colonna corrispondente nel componente che sia una CHAR. Per ulteriori informazioni sulle conversioni dei tipi di dati, vedere Promozione dei tipi di dati.
La sintassi di un'operazione di impostazione è:
<SELECT-statement>
{UNION | INTERSECT | EXCEPT | MINUS} [ALL | DISTINCT]
<SELECT-statement>
{UNION | INTERSECT | EXCEPT | MINUS} [ALL | DISTINCT]
<SELECT-statement>]*
[ORDER BY …]
[LIMIT …]
Le operazioni di set hanno le seguenti restrizioni:
- Se i nomi delle colonne corrispondenti corrispondono, SQL utilizza il nome della colonna nel risultato. Se i nomi delle colonne corrispondenti differiscono, SQL utilizza il nome della colonna della prima query nell'istruzione set. Se si desidera rinominare una colonna nel risultato, utilizzare una clausola AS nella prima query.
- È possibile specificare una clausola ORDER BY opzionale solo nella query finale dell'istruzione set. SQL applica l'ordinamento al risultato finale combinato.
- È possibile specificare una clausola LIMIT opzionale dopo l'ORDER BY. SQL applica il limite al risultato finale combinato.
- È possibile specificare GROUP BY e HAVING solo in query individuali. Non è possibile utilizzarli per influenzare il risultato.