SQLShack (Italiano)
Questo articolo fornirà un tuffo profondo nell’operatore SQL Union, descrivendone i molti usi insieme ad esempi ed esplorando alcune domande comuni come le differenze tra Union vs Union All.
Per soddisfare i requisiti di dati reali, potremmo aver bisogno di combinare set di risultati da più origini dati in modo da poter eseguire l’analisi dei dati o creare nuovi set di dati. I set di dati possono essere identici ma ci sono possibilità che facciano riferimento a tabelle diverse., C’è un modo per combinare i dati in una singola query? Gli operatori impostati sono un’opzione praticabile? Iniziamo e vediamo come alcuni degli operatori esistenti possono essere utilizzati per aiutarci ad affrontare queste sfide comuni.,n vs Unione
Operatori
un operatore è un simbolo o una parola chiave che definisce un’azione che viene eseguita su una o più espressioni nell’istruzione Select.,
Set Operatore
andiamo nel dettaglio di Operatori in SQL Server, e il loro utilizzo
Ci sono quattro principali Operatori in SQL Server:
- Unione
- Unione
- SALVO
- si INTERSECANO
Unione
L’operatore Union combina i risultati di due o più query in un distinto set unico risultato che include tutte le righe che appartengono a tutte le query di Unione. In questa operazione, combina altre due query e rimuove i duplicati.,
Ad esempio, la tabella ‘A’ ha 1,2 e 3 e la tabella ‘B’ ha 3,4,5.,
il risultato, si può vedere un distinto elenco dei record da due set di risultati
Unione
Quando si guarda Unione vs Unione di Tutti noi scoprire che sono molto simili, ma hanno alcune differenze importanti da un dei risultati di performance in prospettiva.,
L’operatore Union combina i risultati di due o più query in un unico set di risultati che include tutte le righe che appartengono a tutte le query nell’Unione. In termini semplici, combina i due o più set di righe e mantiene i duplicati.
Ad esempio, la tabella ‘A’ ha 1,2 e 3 e la tabella ‘B’ ha 3,4,5.,iv>
In uscita, è possibile vedere tutte le righe che includono la ripetizione dei record.,>4
La riga ‘3’ è comune tra le due serie di risultati.,
EXCEPT
L’operatore EXCEPT elenca le righe nella prima che non sono nella seconda.,/div>
Elencare il nome-il comune di righe dal primo set.,
Nota: È molto facile visualizzare un operatore impostato utilizzando un diagramma di Venn, in cui ciascuna delle tabelle è rappresentata da forme intersecanti. Le intersezioni delle forme, in cui le tabelle si sovrappongono, sono le righe in cui viene soddisfatta una condizione.,olumns che sono definiti in ogni query deve avere lo stesso ordine
Nota:
- Tutti questi operatori di rimuovere i duplicati, tranne che per l’operatore Union All
- L’uscita nomi di colonna sono indicati dalla prima query che ho.,e. quando eseguiamo le istruzioni SELECT con uno qualsiasi degli operatori Set e il set di risultati di ciascuna query può avere nomi di colonne diversi, quindi il risultato dell’istruzione SELECT fa riferimento ai nomi delle colonne dalla prima query nell’operazione.
- SQL JOIN è più spesso utilizzato combina colonne da più tabelle correlate mentre SET Operators combina righe da più tabelle.,
- Quando i tipi di espressione sono uguali ma differiscono per precisione, scala o lunghezza, il risultato viene determinato in base alle stesse regole per combinare le espressioni
Esempi:
Le seguenti query T-SQL vengono preparate ed eseguite sul database Adventureworks2014. È possibile scaricare il database di esempio AdventireWorks2014 qui
-
Come utilizzare la clausola simple SQL Union nell’istruzione select
In questo esempio, il set di risultati include un set distinto di righe dal primo set e dal secondo set.,L’esempio seguente si basa sulla regola 1 ,3 & 5.,
SELEZIONARE 1UNIONESELEZIONARE 2UNIONESELEZIONARE 3)UNIONE(SELEZIONARE 3 BUNIONESELEZIONARE 4UNIONESELEZIONARE 5)UNIONE(SELEZIONARE 8 cUNIONESELEZIONARE 9UNIONESELEZIONARE 1)) T;L’uscita è la combinazione di Unione e l’Unione di Tutti gli operatori che utilizzano le parentesi.,
-
Come usare SQL Union con le query che hanno la clausola WHERE
Il seguente esempio mostra l’uso di Union in due istruzioni SELECT con una clausola WHERE e una clausola ORDER BY.,
The following example is based on the rule 1,2 and 3
12345678910SELECT P1.ProductModelID,P1.NameFROM Production.ProductModel P1WHERE ProductModelID IN(3, 4)UNIONSELECT P2.ProductModelID,P2.,NomeDALLA Produzione.ProductModel P2DOVE P2.ProductModelID IN(3, 4)ORDINE DA P1.Nome; -
Come utilizzare la clausola SELECT INTO con Unione di SQL
L’esempio seguente crea un nuovo dbo.tabella fittizia che utilizza la clausola INTO nella prima istruzione SELECT che contiene il set di risultati finali dell’unione delle colonne ProductModel e name da due set di risultati diversi., In questo caso, è derivato dalla stessa tabella ma in una situazione del mondo reale, questo può anche essere due tabelle diverse. L’esempio seguente si basa sulla regola 1, 2 e 4.
12345678910111213141516DROP TABLE IF EXISTS dbo.,dummy;SELECT P1.ProductModelID,P1.NameINTO dummyFROM Production.ProductModel P1WHERE ProductModelID IN(3, 4)UNIONSELECT P2.ProductModelID,P2.NameFROM Production.ProductModel P2WHERE P2.ProductModelID IN(3, 4)ORDER BY P1.Name;GOSELECT *FROM dbo.,Manichino; -
utilizzo di SQL Unione con la query che hanno una clausola WHERE e ORDER BY
Questo è possibile solo quando usiamo SUPERIORE o funzioni di aggregazione in di ogni istruzione select dell’Unione operatore. In questo caso, le prime 10 righe vengono elencate da ciascun set di risultati e combinate le righe utilizzando la clausola Union per ottenere un risultato finale. Vedi anche che la clausola order by è inserita in tutta l’istruzione select.,
123456789101112131415161718192021SELEZIONARE.ModelID,il.,NameFROM(SELECT TOP 10 ProductModelID ModelID,NameFROM Production.ProductModelWHERE ProductModelID NOT IN(3, 4)ORDER BY Name DESC) aUNIONSELECT b.ProductModelID,b.NameFROM(SELECT TOP 10 ProductModelID,NameFROM Production.,ProductModelDOVE ProductModelID IN(5, 6)ORDER BY Nome DESC) b; -
utilizzo di Unione di SQL e SQL Pivot
Nell’esempio seguente stiamo cercando di combinare più di un set di risultati. In una situazione reale, è possibile disporre di numeri finanziari provenienti da varie regioni o dipartimenti e le tabelle potrebbero avere le stesse colonne e tipi di dati, ma si desidera inserirli in un set di righe e in un singolo report., In tale scenario, si utilizza la clausola Union ed è molto facile combinare i risultati e trasformare i dati in un rapporto più significativo.
In questo esempio, il ProductModel viene classificato in Top10, Top100, Top 100 e trasformando le righe come un insieme aggregato dei valori nelle rispettive colonne. Il seguente esempio si basa sulla regola 2.,/div>
23456789101112131415161718192021222324SELECT MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100DAL(SELECT COUNT(*) Top10,0 Top100,0 Top1000DALLA Produzione.,ProductModelWHERE ProductModelID < 10UNIONSELECT 0,COUNT(*),0FROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT 0,0,COUNT(*)FROM Production.,ProductModelDOVE ProductModelID > 101) T;NULL i valori sono molto importanti con gli Operatori e sono trattati come database cittadini. Poiché i NULL sono considerati unici e se due righe hanno un NULL nella stessa colonna, allora sarebbero considerati identici, quindi in tal caso, si sta effettivamente confrontando un NULL con un NULL e ottenendo l’uguaglianza. Nell’esempio seguente, si vede l’uso di valori NULL. In questo caso, viene gestito con la funzione di aggregazione, max.,
23456789101112131415161718192021222324SELECT MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100DAL(SELECT COUNT(*) Top10,NULL Top100,NULL Top1000DALLA Produzione.,ProductModelWHERE ProductModelID < 10UNIONSELECT NULL,COUNT(*),NULLFROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT NULL,NULL,COUNT(*)FROM Production.,ProductModelDOVE ProductModelID > 101) T;
utilizzo di SQL Unione con il Gruppo e Having
L’esempio seguente viene utilizzato l’operatore di Unione per combinare il risultato della tabella che tutti hanno la clausola condizionale definito utilizzando Group by e Having.
Il cognome viene analizzato specificando le condizioni nella clausola having.
Il seguente esempio si basa sulla regola 5.,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
SELEZIONARE pp.lastname,
COUNT ( * ) repeatedtwice,
0 Repeatedthrice
DALLA Persona.Persona COME pp
JOIN HumanResources.Dipendente COME e SU e. BusinessEntityID = pp.,BusinessEntityID
GRUPPO DI pp.lastname
AVENDO COUNT ( * ) = 2
UNION
SELEZIONA pp.LastName,
0,
COUNT(*) NtoZRange
DALLA Persona.Persona COME pp
JOIN HumanResources.Dipendente COME e SU e. BusinessEntityID = pp.BusinessEntityID
GRUPPO DI pp.,Cognome
HAVING COUNT(*) > 2;
|
Possiamo vedere che gli ultimi nomi sono derivati in due colonne diverse utilizzando l’operatore Union
questo è tutto per ora…
Sommario
finora, abbiamo affrontato varie opzioni disponibili e le regole da utilizzare, gli operatori e capire quando usarli. Nel determinare se utilizzare Union vs Union Tutti ci sono alcuni punti da considerare., Usa Union All se sai che i set di risultati da più query non si sovrappongono o generano duplicati e ricorda, se hai bisogno di usare le parentesi, puoi farlo. È inoltre possibile ruotare e trasformare l’output.
Assicurati che i tuoi tipi di dati corrispondano e se hai bisogno di fare un ORDINE, fallo alla fine dopo aver eseguito tutte quelle query impostate. Per sua natura, quando si tratta di Union vs Union All, Union All è più veloce di Union; poiché gli operatori dell’Unione subiscono un sovraccarico aggiuntivo per eliminare i duplicati.
Spero che ti sia piaciuto questo articolo sull’operatore SQL Union., Sentitevi liberi di fare tutte le domande nei commenti qui sotto.
- Autore
- Post Recenti
La mia specialità consiste nel progettare & implementando soluzioni ad alta disponibilità e migrazione DB multipiattaforma., Le tecnologie attualmente in lavorazione sono SQL Server, PowerShell, Oracle e MongoDB.,
Visualizza tutti i messaggi di Prashanth Jayaram
- Una rapida panoramica di controllo del database in SQL – gennaio 28, 2021
- Come impostare la Sincronizzazione di Dati Azure tra Azure SQL database e di SQL Server-edificio – 20 gennaio 2021
- Come eseguire Azure SQL database di Importazione/Esportazione, le operazioni di utilizzo di PowerShell – 14 gennaio 2021