SQLShack (Română)
Acest articol va oferi o scufundare adânc în SQL Uniunii operator, descrie numeroasele sale utilizări, împreună cu exemple și de a explora unele întrebări comune cum ar fi diferențele între Uniune vs Union All.pentru a răspunde cerințelor privind datele din lumea reală, este posibil să fie necesar să combinăm seturi de rezultate din mai multe surse de date, astfel încât să putem face analize de date sau să creăm noi seturi de date. Seturile de date pot fi identice, dar există șanse ca acestea să facă referire la tabele diferite., Există o modalitate de a combina datele într-o singură interogare? Sunt operatorii setați o opțiune viabilă? Să începem și să vedem cum pot fi folosiți unii dintre operatorii existenți pentru a ne ajuta să abordăm aceste provocări comune.,n vs Union All
Operatorii
Un operator este un simbol sau un cuvânt cheie care definește o acțiune care se realizează pe unul sau mai multe expresii în Select.,
Set Operator
Să intrăm în detalii Set de Operatori în SQL Server, și cum să le folosească
Există patru Set de bază de Operatori în SQL Server:
- Uniunea
- Uniunea Toate
- DOAR
- se INTERSECTEAZĂ
Uniune
Uniunea operator combină rezultatele a două sau mai multe interogări într-o distinct singur set de rezultate care include toate rândurile care aparțin toate interogările în Uniune. În această operație, combină încă două interogări și elimină duplicatele.,
de exemplu, tabelul ” A „are 1,2 și 3, iar tabelul” B ” are 3,4,5.,
În producția, puteți vedea o listă separată a înregistrărilor din cele două seturi de rezultate
Union All
atunci Când se uită la Uniunea vs Uniunea Toate vom găsi ele sunt destul de similare, dar au unele diferențe importante de la un rezultate de performanță perspectivă., operatorul Uniunii combină rezultatele a două sau mai multe interogări într-un singur set de rezultate care include toate rândurile care aparțin tuturor interogărilor din Uniune. În termeni simpli, combină cele două sau mai multe seturi de rânduri și păstrează duplicate.
de exemplu, tabelul ” A „are 1,2 și 3, iar tabelul” B ” are 3,4,5.,iv>
la ieșire, puteți vedea toate rândurile care includ repetarea înregistrări la fel de bine.,>4
rand ‘3’ este comun între cele două seturi de rezultate.,
cu excepția
operatorul cu excepția listează rândurile din primul care nu sunt în al doilea.,/div>
Lista de nume comune randuri din primul set.,
Notă: este foarte ușor de a vizualiza un set operator folosind o diagramă Venn, în cazul în care fiecare dintre tabele este reprezentată de intersectare forme. Intersecțiile formelor, unde tabelele se suprapun, sunt rândurile în care este îndeplinită o condiție.,olumns care sunt definite în fiecare interogare trebuie să aibă același ordin
Notă:
- Toate aceste Set de operatori elimina duplicate, cu excepția Uniunii de Toate operatorul
- coloana De ieșire nume sunt menționate la prima interogare nu.,e. când vom rula SELECT declarații cu oricare dintre operatorii de Set și rezultat set de fiecare dintre interogări pot avea nume diferite coloane, astfel încât rezultatul SELECT declarație se referă numele coloanelor de la prima interogare în operațiunea.
- SQL JOIN este mai des folosit combina coloane din mai multe tabele conexe întrucât operatorii SET combină rânduri din mai multe tabele.,
- atunci Când expresia tipuri sunt la fel, dar diferă în precizie, la scară, sau de durata, rezultatul este determinat pe baza acelorași reguli pentru combinarea expresiilor
Exemple:
următoarele T-SQL interogări sunt pregătite și a alerga împotriva Adventureworks2014 baza de date. Puteți descărca proba AdventireWorks2014 baza de date de aici
-
Cum să utilizați simplu SQL Uniunii clauza select
În acest exemplu, rezultatul setul include un set distinct de rânduri din primul set si al doilea set.,Următorul exemplu se bazează pe regula 1, 3 & 5.,
SELECTAȚI 1UNIUNESELECTAȚI 2UNIUNESELECTAȚI 3)UNIUNE(SELECTAȚI 3 BUNIUNESELECTAȚI 4UNIUNESELECTAȚI 5)UNION ALL(SELECTAȚI 8 cUNIUNESELECTAȚI 9UNIUNESELECTAȚI 1)) T;rezultatul este o combinație de Uniune și unirea Tuturor operatorilor folosind paranteze.,
-
Cum să utilizați SQL Uniunii cu interogările care au clauza where
următorul exemplu arată utilizarea Uniunii în două declarațiile SELECT cu clauza where și clauza 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.,Numedin producție.ProductModel P2unde P2.ProductModelID ÎN(3, 4)COMANDA PRIN P1.Nume; -
Cum să utilizați SELECTAȚI ÎN clauza cu SQL Uniunii
următorul exemplu creează un nou dbo.tabelul dummy folosind clauza INTO din prima instrucțiune SELECT care conține setul de rezultate finale al Uniunii coloanelor ProductModel și name din două seturi de rezultate diferite., În acest caz, este derivat din același tabel, dar într-o situație din lumea reală, aceasta poate fi, de asemenea, două tabele diferite. Următorul exemplu se bazează pe regula 1 , 2 și 4.
12345678910111213141516DROP TABLE DACĂ EXISTĂ 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.,Dummy; -
Cum să utilizați SQL Uniunii cu întrebări care au o clauza where și clauza ORDER BY
Acest lucru este posibil numai atunci când vom folosi de SUS sau de funcții agregate în fiecare select al Uniunii operator. În acest caz, primele 10 rânduri sunt listate din fiecare set de rezultate și combinate rândurile folosind clauza Union pentru a obține un rezultat final. De asemenea, vedeți că clauza comandă după este plasată în toată instrucțiunea select.,
123456789101112131415161718192021SELECTAȚI.ModelID,la.,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.,ProductModelUNDE ProductModelID IN(5, 6)ORDER BY Nume DESC) b; -
Cum să utilizați SQL Uniunii și SQL Pivot
În exemplul următor, suntem încercarea de a combina mai mult de un set de rezultate. Într-o situație reală, este posibil să aveți numere financiare din diferite regiuni sau departamente, iar tabelele ar putea avea aceleași coloane și tipuri de date, dar doriți să le puneți într-un set de rânduri și într-un singur raport., Într-un astfel de scenariu, ați folosi clauza Uniunii și este foarte ușor să combinați rezultatele și să transformați datele într-un raport mai semnificativ.
în acest exemplu, modelul de produs este clasificat în Top10, Top100, Top 100 și transformă rândurile ca un set agregat de valori în coloanele respective. Următorul exemplu se bazează pe regula 2.,/div>
23456789101112131415161718192021222324SELECT MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100DE(SELECT COUNT(*) Top10,0 Top100,0 Top1000DE Producție.,ProductModelWHERE ProductModelID < 10UNIONSELECT 0,COUNT(*),0FROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT 0,0,COUNT(*)FROM Production.,ProductModelUNDE ProductModelID > 101) T;NULL valori sunt foarte importante cu Setul de Operatori și sunt tratate ca la clasa a doua baza de date a cetățenilor. Deoarece nul – urile sunt considerate unice și dacă două rânduri au un nul în aceeași coloană, atunci ele ar fi considerate identice, deci în acest caz, comparați de fapt un nul cu un nul și obțineți egalitate. În exemplul următor, vedeți utilizarea valorilor nule. În acest caz, este operat cu funcția agregată, max.,
23456789101112131415161718192021222324SELECT MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100DE(SELECT COUNT(*) Top10,NULL Top100,NULL Top1000DE Producție.,ProductModelWHERE ProductModelID < 10UNIONSELECT NULL,COUNT(*),NULLFROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT NULL,NULL,COUNT(*)FROM Production.,ProductModelUNDE ProductModelID > 101) T;
Cum să utilizați SQL Uniunea cu Grupul și Având clauze
Următoarele exemple de utilizare a operatorului Union pentru a combina rezultatele din tabel că toate au condiționată de clauze definite folosind Group by si Having clauză.
numele de familie este analizat prin specificarea condițiilor din clauza having.
următorul exemplu se bazează pe regula 5.,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
SELECTAȚI pp.nume,
COUNT(*) repeatedtwice,
0 Repeatedthrice
DE la Persoana.Persoană ca pp
Alăturați-vă Humanresurse.Angajat ca e pe e. BusinessEntityID = pp.,BusinessEntityID
grup de pp.numele de familie
având numărul(*) = 2
Uniunea
selectați pp.Numele de familie,
0,
COUNT(*) NtoZRange
de la persoană.Persoană ca pp
Alăturați-vă Humanresurse.Angajat ca e pe e. BusinessEntityID = pp.BusinessEntityID
grup de pp.,Nume
HAVING COUNT(*) > 2;
|
putem vedea că ultimul nume sunt derivate în două coloane diferite, folosind Uniunii operator
Asta e tot pentru acum…
Sumar
Astfel, de departe, ne-am adresat diverse opțiuni disponibile și regulile de utilizare Set de operatori și de a înțelege când să le folosească. Atunci când se determină dacă să utilizeze Uniunea vs Uniunea toate există câteva puncte să ia în considerare., Utilizați Union All dacă știți că seturile de rezultate din mai multe interogări nu se suprapun sau nu generează duplicate și amintiți-vă, dacă trebuie să utilizați paranteze, puteți face asta. De asemenea, puteți pivota și transforma ieșirea.
doar asigurați-vă că tipurile de date se potrivesc și dacă trebuie să faceți o comandă, faceți-o la sfârșit după ce ați rulat toate aceste interogări setate. Prin natura sa, când vine vorba de Uniune vs Uniune toate, Uniunea toate este mai rapidă decât Uniunea; deoarece operatorii din Uniune suportă cheltuieli suplimentare pentru a elimina duplicatele. sper că v-a plăcut acest articol despre operatorul SQL Union., Simțiți-vă liber să puneți întrebări în comentariile de mai jos.
- Autor
- Mesajele Recente
specialitatea mea constă în proiectarea & implementarea soluțiilor de disponibilitate ridicată și migrarea DB multiplă platformă., Tehnologiile care lucrează în prezent sunt SQL Server, PowerShell, Oracle și MongoDB.,
Vezi toate posturile de Prashanth Jayaram
- O privire de ansamblu rapidă a bazei de date de audit în SQL – ianuarie 28, 2021
- Cum să înființeze Azure de Sincronizare a Datelor între baze de date SQL Azure și local SQL Server – 20 ianuarie 2021
- Cum de a efectua Azure SQL baze de date de Import/Export, operațiuni folosind PowerShell – 14 ianuarie 2021