SQLShack (Čeština)
Tento článek vám poskytne hluboký ponor do SQL Unie operátor, popisující jeho mnoho použití, spolu s příklady a prozkoumat některé běžné otázky, jako rozdíly mezi Unií vs Unie.
K řešení reálných dat požadavky, budeme muset kombinovat sady výsledků z více zdrojů dat tak, že bychom mohli dělat analýzu dat nebo vytvořit nové datové soubory. Datové sady mohou být identické, ale existuje šance, že odkazují na různé tabulky., Existuje způsob, jak kombinovat data v jediném dotazu? Jsou nastavené operátory schůdnou možností? Začněme a uvidíme, jak mohou být někteří stávající operátoři použiti, aby nám pomohli řešit tyto společné výzvy.,n vs Unie
Operátoři
operátor je znak nebo klíčové slovo definuje akci, která se provádí na jednom nebo více výrazů v příkazu Select.,
Operátor
Pojďme se dostat do detailů Nastavit Operátory v SQL Server, a jak je použít,
k Dispozici jsou čtyři základní množinové Operátory SQL Server:
- Unie
- Unie
- s VÝJIMKOU
- PROTNOUT.
Unie
operátoru Union kombinuje výsledky dvou nebo více dotazů do jednotlivý výsledek sada, která obsahuje všechny řádky, které patří na všechny dotazy v Unii. V této operaci kombinuje další dva dotazy a odstraňuje duplikáty.,
například, tabulka “ A „má 1,2 a 3 a tabulka“ B “ má 3,4,5.,
V výstup, můžete vidět zřetelné seznam záznamů ze dvou sad výsledků
Unie
Při pohledu na Unii vs Unie Všechny zjistíme, že jsou velmi podobné, ale mají některé významné rozdíly od výsledků výkonnosti perspektivy.,
operátor Unie kombinuje výsledky dvou nebo více dotazů do jediné sady výsledků, která zahrnuje všechny řádky, které patří ke všem dotazům v Unii. Jednoduše řečeno, kombinuje dvě nebo více řadových sad a udržuje duplikáty.
například, tabulka “ A „má 1,2 a 3 a tabulka“ B “ má 3,4,5.,iv>
Ve výstupu, můžete vidět všechny řádky, které obsahují opakující se záznamy stejně.,>4
řádek ‚3‘ je běžné mezi dvě sady výsledků.,
s výjimkou
vyjma operátora uvádí řádky v prvním, které nejsou ve druhém.,/div>
Seznam jméno-společné řádky z prvního souboru.,
Poznámka: je velmi snadné si představit operátor pomocí Vennova diagramu, kde každý z tabulky je reprezentován protínající se tvary. Průsečíky tvarů, kde se tabulky překrývají, jsou řádky, kde je splněna podmínka.,olumns, které jsou definovány v každém dotazu, musí mít stejný řád
Poznámka:
- Všechny z těchto Sada operátory odstranit duplikáty, s výjimkou pro Všechny Unie operátor
- výstupní sloupec názvy jsou uvedené od prvního dotazu jsem.,e. když jsme se spustit VYBERTE prohlášení s některou z množinové operátory a sadu výsledků jednotlivých dotazů mohou mít různé názvy sloupců, takže výsledek SELECT odkazuje na názvy sloupců z prvního dotazu v provozu.
- SQL JOIN se častěji používá Kombinovat sloupce z více souvisejících tabulek, zatímco set operátoři kombinuje řádky z více tabulek.,
- Při vyjádření typy jsou stejné, ale liší přesnost, měřítko nebo délka, výsledek je určena na základě stejná pravidla pro kombinace výrazů
Příklady:
následující T-SQL dotazy jsou připraveni a běžet proti Adventureworks2014 databáze. Zde si můžete stáhnout ukázkové AdventireWorks2014 databáze.
-
Jak používat jednoduché SQL Unie klauzule select
V tomto příkladu, výsledek sada obsahuje odlišnou sadu řádků z první sady a druhou sadu.,Následující příklad je založen na pravidle 1, 3 & 5.,
ZVOLTE možnost 1UNIEZVOLTE možnost 2UNIEVYBERTE 3)UNIE(VYBRAT 3. BUNIEVYBERTE 4UNIEVYBERTE 5)UNIE(VYBERTE 8 cUNIEVYBRAT 9UNIEZVOLTE možnost 1)) T;výstup je kombinace Unie a Unie Všech operátorů pomocí závorek.,
-
Jak používat SQL Unie s dotazy, které mají klauzuli where
následující příklad ukazuje použití v Unii ve dvou příkazů SELECT s klauzulí where a ORDER BY klauzule.,
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ázevz výroby.ProductModel P2kde P2.ProductModelID V(3, 4)OBJEDNÁVKY P1.Jméno; -
Jak používat SELECT INTO klauzule s SQL Unie
následující příklad vytvoří nový dbo.dummy tabulka pomocí klauzule INTO v příkazu first SELECT, který obsahuje sadu konečných výsledků spojení sloupců ProductModel a název ze dvou různých sad výsledků., V tomto případě je odvozen ze stejné tabulky, ale v situaci v reálném světě to mohou být také dvě různé tabulky. Následující příklad je založen na pravidlech 1, 2 a 4.
12345678910111213141516DROP TABLE, POKUD EXISTUJE 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; -
Jak používat SQL Unie s dotazy, které mají klauzuli where a ORDER BY klauzule
To je možné pouze tehdy, když jsme se použít HORNÍ nebo agregační funkce v každé select Unie operátora. V tomto případě, top 10 řádky jsou uvedeny z každé sady výsledků a kombinovat řádky pomocí klauzule Unie získat konečný výsledek. Také vidíte, že pořadí podle klauzule je umístěno ve všech příkazech select.,
123456789101112131415161718192021VYBERTE.ModelID,the.,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.,ProductModel, KDE ProductModelID V(5, 6)ORDER BY Jméno DESC) b; -
Jak používat SQL Unie a SQL Pivot
V následujícím příkladu snažíme se kombinovat více než jednu sadu výsledků. V reálném situaci ve světě, můžete mít finanční čísla z různých oblastí nebo oddělení a tabulky mohou mít stejné sloupce a typy dat, ale chcete dát v jednom z řádků a v jedné zprávě., V takovém případě byste použili klauzuli Unie a je velmi snadné kombinovat výsledky a přeměnit data na smysluplnější zprávu.
v tomto příkladu je Produktmodel zařazen do Top10, Top100, top 100 a transformuje řádky jako agregovanou sadu hodnot do příslušných sloupců. Následující příklad je založen na pravidle 2.,/div>
23456789101112131415161718192021222324SELECT MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100(SELECT COUNT(*) Top10,0 Top100,0 Top1000OD Výroby.,ProductModelWHERE ProductModelID < 10UNIONSELECT 0,COUNT(*),0FROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT 0,0,COUNT(*)FROM Production.,ProductModel, KDE ProductModelID > 101) T;NULL hodnoty jsou velmi důležité, s uvedenými Subjekty a je s nimi zacházeno jako s druhořadými databáze občanů. Protože hodnoty Null jsou považovány za unikátní a pokud dva řádky mají hodnotu NULL ve stejném sloupci, pak budou považovány za identické, takže v tomto případě, jste ve skutečnosti, porovnávání NULL NULL a získání rovnoprávnosti. V následujícím příkladu vidíte použití nulových hodnot. V tomto případě je provozován s funkcí agregátu, max.,
23456789101112131415161718192021222324SELECT MAX(Top10) Top10,MAX(Top100) Top100,MAX(Top1000) Top100(SELECT COUNT(*) Top10,NULL Top100,NULL Top1000OD Výroby.,ProductModelWHERE ProductModelID < 10UNIONSELECT NULL,COUNT(*),NULLFROM Production.ProductModelWHERE ProductModelID > 11AND ProductModelID < 100UNIONSELECT NULL,NULL,COUNT(*)FROM Production.,ProductModel, KDE ProductModelID > 101) T;
Jak používat SQL Unie se Skupinou a S ustanovení
Následující příklady použití operátoru Union kombinovat výsledek stolu, které všechny mají podmíněné doložky definované pomocí Group by a Having klauzule.
příjmení je analyzováno zadáním podmínek v klauzuli mající.
následující příklad je založen na pravidle 5.,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
ZVOLTE pp.lastname,
COUNT ( * ) repeatedtwice,
0 Repeatedthrice
od osoby.Osoba jako pp
připojte se k HumanResources.Zaměstnanec jako E na e. BusinessEntityID = pp . ,Podnikatelská skupina
GROUP by pp.lastname
mající počet (*) = 2
UNION
SELECT pp.LastName,
0,
COUNT (*) NtoZRange
from Person.Osoba jako pp
připojte se k HumanResources.Zaměstnanec jako E na e. BusinessEntityID = pp . Podnikatelská skupina
GROUP by pp.,Příjmení
HAVING COUNT(*) > 2;
|
můžeme vidět, že poslední názvy jsou odvozeny do dvou různých sloupců pomocí operátoru Union
to je pro teď vše…
Shrnutí
zatím jsme oslovili různé dostupné možnosti a pravidla použít množinové operátory a pochopit, kdy je použít. Při určování, zda používat Union vs Union, je třeba zvážit několik bodů., Použití Union All, pokud víte, že sady výsledků z více dotazů nepřekrývají nebo vytvářet duplikáty a pamatujte, pokud budete muset použít závorky, můžete to udělat, že. Můžete také otočit a transformovat výstup.
jen se ujistěte, že se vaše datové typy shodují a pokud potřebujete provést objednávku, udělejte to na konci po spuštění všech těchto nastavených dotazů. Pokud jde o Union vs Union All, Union All je od přírody rychlejší než Union; jelikož provozovatelům Unie vznikají dodatečné režijní náklady, aby se odstranily duplikáty.
doufám, že se vám tento článek líbil na operátorovi SQL Union., Neváhejte se zeptat na jakékoli dotazy v komentářích níže.
- Autora
- Poslední Příspěvky
Moje specializace spočívá v navrhování & prováděcí Vysokou dostupnost řešení a cross-platform DB Migrace., Technologie, na kterých v současné době pracují, jsou SQL Server, PowerShell, Oracle a MongoDB.,
Zobrazit všechny příspěvky od Prashanth Jayaram
- rychlý přehled z databáze auditu v SQL – 28. ledna 2021
- Jak nastavit Azure Synchronizace Dat mezi SQL Azure databází a on-premises serveru SQL Server – 20. ledna 2021
- Jak provést SQL Azure databáze Import/Export operace pomocí PowerShell – 14. ledna 2021