SQLShack (Magyar)
Ez a cikk egy mély merülés az SQL Union operátor, leírja a sok felhasználási együtt példákat, és fedezze fel néhány gyakori kérdés, mint a különbségek Unió vs Union All.
a valós adatkövetelmények kezeléséhez szükség lehet több adatforrásból származó eredménykészletek kombinálására, hogy adatelemzést végezhessünk vagy új adatkészleteket hozzunk létre. Az adatkészletek azonosak lehetnek, de valószínű, hogy különböző táblákra hivatkoznak., Van-e mód arra, hogy az adatokat egyetlen lekérdezésben egyesítsük? A Set operátorok életképes lehetőség? Kezdjük el, és nézzük meg, hogy a meglévő üzemeltetők egy része hogyan segíthet megoldani ezeket a közös kihívásokat.,n vs Unió Minden
Szereplők
Az üzemeltető egy szimbólum vagy egy kulcsszó határozza meg egy műveletet hajt végre egy vagy több kifejezések a Válassza ki a nyilatkozatot.,
Set Üzemeltető
menjünk bele a részletekbe, hogy Meghatározott Szereplők SQL Server, hogyan kell használni őket
négy alapvető Meghatározott Szereplők SQL Szerver:
- Union
- Union All
- KIVÉVE,
- ADATBÁZIS
Union
Az Unió üzemeltető egyesíti az eredmények két vagy több lekérdezések egy különálló egyetlen eredmény halmaz, amely tartalmazza az összes sor tartozó minden lekérdezések az Unióban. Ebben a műveletben még két lekérdezést kombinál, majd eltávolítja a másolatokat.,
például az ” A “táblázat 1,2 és 3, A” B ” táblázat pedig 3,4,5.,
a kimenet, látod, egy külön listában a nyilvántartást a két eredmény határozza
Union All
Ha ránézünk Unió vs Unió Minden találjuk, hogy meglehetősen hasonló, de van néhány fontos különbség a teljesítmény eredmények szempontjából.,
az Union operátor két vagy több lekérdezés eredményeit egyetlen eredménykészletbe egyesíti, amely tartalmazza az Unió összes lekérdezéséhez tartozó összes sort. Egyszerűen fogalmazva, egyesíti a két vagy több sorkészletet, és megtartja a másolatokat.
például az ” A “táblázat 1,2 és 3, A” B ” táblázat pedig 3,4,5.,iv.>
a kimenet, láthatjuk a sorok közé ismétlődő bejegyzések is.,>4
A sorban a ” 3 ” közös között a két eredmény határozza meg.,
kivéve
a kivétel operátor felsorolja az első sorokat, amelyek nem a másodikban vannak.,/div>
a Lista neve-a közös sor az első szettet.,
Megjegyzés: nagyon könnyű megjeleníteni egy készletkezelőt egy Venn diagram segítségével, ahol az egyes táblázatokat metsző alakzatok képviselik. Az alakzatok metszéspontjai, ahol a táblák átfedik egymást, azok a sorok, ahol a feltétel teljesül.,olumns meghatározott minden egyes lekérdezés kell ugyanabban a sorrendben
Megjegyzés:
- Minden ilyen szereplők ismétlődések eltávolítása, kivéve az Unió Minden üzemeltető
- A kimeneti oszlop neveket említett, az első lekérdezés én.,e.amikor futunk a SELECT nyilatkozatok bármelyik beállított operátorok és eredményhalmaz az egyes lekérdezések lehetnek különböző oszlopneveket, így az eredmény a SELECT nyilatkozat utal az oszlop nevét az első lekérdezés a műveletben.
- az SQL JOIN-t gyakrabban használják oszlopok kombinálása több kapcsolódó táblából, míg a SET operátorok több táblából álló sorokat kombinálnak.,
- Ha a kifejezés típusa ugyanaz, de más a precíziós, mérleg, vagy a hossza, akkor az eredmény alapján határozzák meg, ugyanazok a szabályok összefűzésének kifejezések
Példa:
A következő T-SQL-lekérdezések készített futás ellen a Adventureworks2014 adatbázis. Letöltheti a minta AdventireWorks2014 adatbázis itt
-
hogyan kell használni az egyszerű SQL Union záradékot select utasítás
ebben a példában az eredményhalmaz tartalmaz egy különálló sorokat az első és a második készletből.,A következő példa az 1. szabályra épül, 3 & 5.,
VÁLASSZUK a 1UNIONVÁLASSZUK a 2UNIONVÁLASSZUK a 3)UNION(VÁLASSZUK a 3 a BUNIONVÁLASSZA ki a 4UNIONVÁLASSZUK 5)UNION ALL(VÁLASSZA 8 cUNIONVÁLASSZA ki a 9UNIONVÁLASSZUK a 1)) T;A kimenet a kombináció Unió Unió Összes szereplők, zárójel használata.,
-
hogyan kell használni az SQL Union-t a WHERE záradékkal rendelkező lekérdezésekkel
a következő példa az Union használatát mutatja két SELECT-nyilatkozatban, ahol a WHERE záradék és a megrendelés záradék szerint.,
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.,Néva gyártásból.ProductModel P2ahol P2.ProductModelID IN (3, 4)P1.Name; -
használata SELECT into záradék SQL Union
a következő példa létrehoz egy új dbo.dummy táblázat az INT záradék az első SELECT nyilatkozatot, amely rendelkezik a végeredmény az Unió az oszlopok ProductModel and name két különböző eredmény készletek., Ebben az esetben ugyanabból a táblázatból származik, de valós helyzetben ez két különböző táblázat is lehet. A következő példa az 1., 2. és 4. szabályra épül.
12345678910111213141516DROP TABLE HA LÉTEZIK 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; -
hogyan használjuk az SQL Uniót olyan lekérdezésekkel, amelyek a
felső vagy összesített funkciók az Unió üzemeltetőjének minden egyes kiválasztott nyilatkozatában. Ebben az esetben az egyes eredményhalmazokból a top 10 sor kerül felsorolásra, és a sorokat az Union záradék segítségével kombinálják a végeredmény eléréséhez. Azt is látni, hogy a megrendelés záradék kerül az összes select nyilatkozatot.,
123456789101112131415161718192021VÁLASSZA.Modellid,az.,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.,ProductModelahol ProductModelID IN(5, 6)megrendelés név szerint DESC) b;/div>
-
Az SQL Union és az SQL pivot
használata a következő példában több eredménykészletet próbálunk kombinálni. Egy valós helyzetben előfordulhat, hogy különböző régiók vagy osztályok pénzügyi számai vannak, és a táblázatok azonos oszlopokkal és adattípusokkal rendelkeznek, de ezeket egy sorba és egyetlen jelentésbe szeretné helyezni., Ilyen esetben az uniós záradékot használná, és nagyon könnyű az eredményeket összevonni, és az adatokat értelmesebb jelentéssé alakítani.
ebben a példában a ProductModel Top10, Top100, Top 100 kategóriába van besorolva, a sorokat pedig az értékek összesített halmazaként alakítja át a megfelelő oszlopokba. A következő példa a 2. szabályon alapul.,/div>
23456789101112131415161718192021222324SELECT MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100a(SELECT COUNT(*) Top10,0 Top100,0 Top1000A Termelés.,ProductModelWHERE ProductModelID < 10UNIONSELECT 0,COUNT(*),0FROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT 0,0,COUNT(*)FROM Production.,ProductModelHOL ProductModelID > 101) T;a NULL értékek nagyon fontosak a Set-Üzemeltetők, illetve kezelik, a második osztály adatbázis polgárok. Mert Nullák tekinthető egyedi, ha két sor egy ÜRES ugyanabban az oszlopban, akkor lenne azonosnak tekinthető, így ebben az esetben tulajdonképpen összehasonlítani egy NULL-NULL, majd egyre egyenlőség. A következő példában NULL értékek használata látható. Ebben az esetben az aggregált funkcióval működik, max.,
23456789101112131415161718192021222324SELECT MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100a(SELECT COUNT(*) Top10,NULL Top100,NULL Top1000A Termelés.,ProductModelWHERE ProductModelID < 10UNIONSELECT NULL,COUNT(*),NULLFROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT NULL,NULL,COUNT(*)FROM Production.,ProductModelHOL ProductModelID > 101) T;
, Hogyan kell használni az SQL Unió Csoport, Hogy záradékok
A következő példákban az Unió üzemeltető össze az eredménye a táblázat, amely a feltételes mellékmondat segítségével definiált Csoport által, majd Miután záradék.
a vezetéknevet a having záradék feltételeinek megadásával értelmezzük.
a következő példa az 5. szabályon alapul.,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
VÁLASSZA ki a pp.lastname,
COUNT (*) repeatedtwice,
0 Repeatedthrice
a személy.Személy pp
csatlakozzon a HumanResources-hoz.Alkalmazott E. ON e.BusinessEntityID = pp.,BusinessEntityID
csoport pp.lastname
miután COUNT(*) = 2
UNION
válassza pp.LastName,
0,
COUNT(*) NtoZRange
személytől.Személy pp
csatlakozzon a HumanResources-hoz.Alkalmazott E. ON e.BusinessEntityID = pp.BusinessEntityID
csoport pp.,Vezetéknév
HAVING COUNT(*) > 2;
|
láthatjuk, hogy az utolsó nevek származnak két különböző oszlopok segítségével az Unió üzemeltető
Ez most ennyi volt…
Összefoglalás
eddig foglalkoztunk a különböző rendelkezésre álló opciók lehetőséget, majd a szabályok használata Meghatározott szereplők megérteni, hogy mikor kell használni őket. Annak meghatározásakor, hogy az Union vs Union-T használják-e, minden van néhány szempont, amelyet figyelembe kell venni., Használja Union All ha tudja, hogy a több lekérdezésből származó eredménykészletek nem fedik egymást, vagy nem generálnak másolatokat, és ne feledje, hogy ha zárójeleket kell használnia, akkor ezt megteheti. A kimenetet is elforgathatja és átalakíthatja.
csak ellenőrizze, hogy az adattípusok megegyeznek-e, és ha megrendelést kell tennie, akkor az összes beállított lekérdezés futtatása után végezze el a végén. Természeténél fogva, amikor az Union vs Union All-ről van szó, az Union All gyorsabb, mint az Union; mivel az uniós gazdasági szereplők további költségeket vetnek fel a duplikációk kiküszöbölése érdekében.
remélem tetszett ez a cikk az SQL Union operátor., Nyugodtan tegyen fel kérdéseket az alábbi megjegyzésekben.
- Szerző
- Utolsó Hozzászólás
szakterületem a & magas rendelkezésre állású megoldások és platformközi DB migráció megvalósítása., A jelenleg működő technológiák az SQL Server, a PowerShell, az Oracle és a MongoDB.,
összes Megtekintése hozzászólások Prashanth Jayaram
- Egy gyors áttekintést adatbázis ellenőrzés az SQL – január 28, 2021
- Hogyan kell beállítani az Azure Adatok Szinkronizálása között SQL Azure adatbázis, valamint az intézményi SQL Server – január 20, 2021
- Hogyan kell elvégezni az SQL Azure adatbázis Behozatali/Kiviteli műveletek segítségével PowerShell – január 14, 2021