Combina dati utilizzando (SET OPERATORS) UNION, INTERSECT ed EXCEPT in SQL Server
- 12-09-2022
- Toanngo92
- 0 Comments
impostare gli operatori forniti da SQL Server:
- UNIONE
- INTERSEC
- TRANNE
Mục lục
Operatore sindacale (unione)
I risultati di due diverse istruzioni di query possono essere combinati in un unico set di risultati utilizzando l’operatore UNION. Le istruzioni di query devono avere un tipo di colonna compatibile e un numero uguale di colonne. I nomi delle colonne possono essere diversi in ciascuna istruzione, ma i tipi di dati devono essere compatibili. Per tipi di dati compatibili, significa che il contenuto di una delle colonne può essere convertito in un’altra colonna. Ad esempio, se un’istruzione di query ha il tipo di dati di int e un’altra ha il tipo di dati di money , sono compatibili tra loro e l’unione può aver luogo tra di loro perché i dati int possono essere convertiti in money .data
Sintassi:
Query_Statement1 UNION [ALL] Query Statment_2
Per esempio:
SELECT Product.ProductId FROM Production.Product UNION SELECT ProductId FROM Sales.SalesOrderDetail
L’istruzione precedente recupererà l’intera colonna ProductId di entrambe le tabelle che corrispondono. Se si utilizza la clausola ALL , tutte le tabelle appariranno nel set di risultati inclusi i record duplicati (in dettaglio ci sono molti Ordini che vendono lo stesso Prodotto).
UNION ALL esempio:
SELECT Product.ProductId FROM Production.Product UNION ALL SELECT ProductId FROM Sales.SalesOrderDetail
Per impostazione predefinita, l’operatore UNION elimina i record ridondanti nel set di risultati. Tuttavia, se si aggiunge la clausola ALL all’operatore UNION, verranno restituiti tutti i record.
Differenza tra UNION e JOIN:
Le operazioni JOIN e UNION possono essere utilizzate per combinare i dati di una o più tabelle. La differenza sta nel modo in cui i dati vengono combinati.
In una parola, join combina i dati in nuove colonne. Se vengono unite due tabelle, i dati della prima tabella vengono visualizzati in un insieme di colonne insieme alla colonna della seconda tabella nella stessa riga.
Le unioni combinano i dati in nuove righe. Se due tabelle vengono “unite” insieme, i dati della prima tabella si trovano in un insieme di righe e i dati della seconda tabella in un altro insieme. Le righe hanno lo stesso risultato.
Operatore INTERSECT (incrocio)
Supponiamo che la situazione abbia 2 tabelle Product e SalesOrderDetail e desideri visualizzare tutte le righe comuni in entrambe le tabelle. Per fare ciò, puoi utilizzare l’operatore INTERSECT . L’operatore INTERSECT viene utilizzato con due istruzioni di query che restituiscono un set di risultati separato con righe comuni a entrambe le query.
Sintassi:
Query_statement1 INTERSECT Query_statement2
Per esempio:
SELECT Product.ProductId FROM Production.Product INTERSECT SELECT ProductId FROM Sales.SalesOrderDetail
Il risultato dell’intersezione tra le tabelle Production.Product e Sales.SalesOrderDetail avrà solo productid che corrispondono ai record nella tabella prodotto. In una grande azienda, ci sarà un gran numero di record di dati archiviati nel database. Invece di memorizzare tutti i dati in un’unica tabella, può essere suddiviso in più tabelle diverse. Quando i dati vengono archiviati in tabelle separate, SQL Server dispone di molti modi per combinare i dati dalle tabelle come JOIN,UNION,INTERSECT .
Regole per l’utilizzo di INTERSECT :
- Il numero di colonne e l’ordine in cui vengono fornite devono essere gli stessi in entrambe le query
- I tipi di dati delle colonne utilizzate devono essere compatibili
Operatore EXCEPT (tranne)
L’ operatore EXCEPT restituisce tutte le righe distinte della query a sinistra di questo operatore e rimuove tutti i record dal set di risultati se corrispondono alla condizione a destra dell’operatore EXCEPT .
Sintassi:
Query_statement1 EXCEPT Query_statement2
Le due regole che si applicano all’operatore INTERSECT si applicano anche all’operatore EXCEPT:
- Il numero di colonne e l’ordine in cui vengono fornite devono essere gli stessi in entrambe le query
- I tipi di dati delle colonne utilizzate devono essere compatibili
Per esempio:
SELECT Product.ProductId FROM Production.Product EXCEPT SELECT ProductId FROM Sales.SalesOrderDetail
Con l’esempio sopra, vengono restituiti solo i record della tabella Production.Product che non compaiono nella tabella Sales.SalesOrderDetail, possiamo vedere che questa clausola può essere utilizzata nell’attività di ricerca e analisi di prodotti non ancora venduti.
Vediamo che l’operatore EXCEPT recupera tutti i record dalla prima tabella escluse le corrispondenze nella tabella 2, quindi quando si utilizza EXCEPT, l’ordine delle 2 tabelle nella query è importante e con INTERSECT non importa quale tabella è predefinita.