SQLShack (Čeština)

0 Comments

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

  • SQL Syntaxe Operátor
  • Jak používat jednoduché SQL Unie klauzule select
  • Jak používat SQL Unie s dotazy, které mají klauzuli where
  • Jak používat SELECT INTO klauzule s Eu
  • Jak používat SQL Unie s dotazy, které mají klauzuli where a order by klauzule
  • Jak používat SQL Unie a SQL Pivot
  • Jak používat SQL Unie se SKUPINOU a S klauzulí
  • 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:

    1. Unie
    2. Unie
    3. s VÝJIMKOU
    4. 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.,

    UNIE
    ZVOLTE možnost 2
    UNIE
    VYBERTE 3
    )
    UNIE
    (
    VYBERTE 3
    UNIE
    VYBERTE 4
    UNIE
    VYBERTE 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>

    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    ZVOLTE možnost 1 ID
    UNIE
    ZVOLTE možnost 2
    UNIE
    VYBERTE 3
    )
    UNIE
    (
    VYBERTE 3
    UNIE
    VYBERTE 4
    UNIE
    VYBERTE 5
    );

    Ve výstupu, můžete vidět všechny řádky, které obsahují opakující se záznamy stejně.,>4

    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    ZVOLTE možnost 1 ID
    UNIE
    ZVOLTE možnost 2
    UNIE
    VYBERTE 3
    )
    se protínají
    (
    VYBERTE 3
    UNIE
    VYBERTE 4
    UNIE
    VYBERTE 5
    );

    řá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>

    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    ZVOLTE možnost 1
    UNIE
    ZVOLTE možnost 2
    UNIE
    VYBERTE 3
    )
    s VÝJIMKOU
    (
    VYBRAT 3. B
    UNIE
    VYBERTE 4
    UNIE
    VYBERTE 5
    );

    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

  • Následné SQL řádek sady musí odpovídat typu dat prvního dotazu
  • Závorky jsou povoleny k výstavbě další množinové operátory ve stejném prohlášení
  • Je možné mít klauzuli ORDER BY, ale to by měla být poslední prohlášení SQL
  • GROUP BY a HAVING klauzule může být aplikován na individuální dotaz
  • Poznámka:

    1. Všechny z těchto Sada operátory odstranit duplikáty, s výjimkou pro Všechny Unie operátor
    2. 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.
    3. 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.,
    4. 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.

    1. 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 1
      UNIE
      ZVOLTE možnost 2
      UNIE
      VYBERTE 3
      )
      UNIE
      (
      VYBRAT 3. B
      UNIE
      VYBERTE 4
      UNIE
      VYBERTE 5
      )
      UNIE
      (
      VYBERTE 8 c
      UNIE
      VYBRAT 9
      UNIE
      ZVOLTE možnost 1
      )
      ) T;

      výstup je kombinace Unie a Unie Všech operátorů pomocí závorek.,

    2. 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

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10

      SELECT P1.ProductModelID,
      P1.Name
      FROM Production.ProductModel P1
      WHERE ProductModelID IN(3, 4)
      UNION
      SELECT P2.ProductModelID,
      P2.,Název
      z výroby.ProductModel P2
      kde P2.ProductModelID V(3, 4)
      OBJEDNÁVKY P1.Jméno;

    3. 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.

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16

      DROP TABLE, POKUD EXISTUJE dbo.,dummy;
      SELECT P1.ProductModelID,
      P1.Name
      INTO dummy
      FROM Production.ProductModel P1
      WHERE ProductModelID IN(3, 4)
      UNION
      SELECT P2.ProductModelID,
      P2.Name
      FROM Production.ProductModel P2
      WHERE P2.ProductModelID IN(3, 4)
      ORDER BY P1.Name;
      GO
      SELECT *
      FROM dbo.,Dummy;

    4. 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.,

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21

      VYBERTE.ModelID,
      the.,Name
      FROM
      (
      SELECT TOP 10 ProductModelID ModelID,
      Name
      FROM Production.ProductModel
      WHERE ProductModelID NOT IN(3, 4)
      ORDER BY Name DESC
      ) a
      UNION
      SELECT b.ProductModelID,
      b.Name
      FROM
      (
      SELECT TOP 10 ProductModelID,
      Name
      FROM Production.,ProductModel
      , KDE ProductModelID V(5, 6)
      ORDER BY Jméno DESC
      ) b;

    5. 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>

      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      SELECT MAX(Top10) Top10,
      MAX(Top100) Top100,
      MAX(Top1000) Top100
      (
      SELECT COUNT(*) Top10,
      0 Top100,
      0 Top1000
      OD Výroby.,ProductModel
      WHERE ProductModelID < 10
      UNION
      SELECT 0,
      COUNT(*),
      0
      FROM Production.ProductModel
      WHERE ProductModelID > 11
      AND ProductModelID < 100
      UNION
      SELECT 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.,

      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      SELECT MAX(Top10) Top10,
      MAX(Top100) Top100,
      MAX(Top1000) Top100
      (
      SELECT COUNT(*) Top10,
      NULL Top100,
      NULL Top1000
      OD Výroby.,ProductModel
      WHERE ProductModelID < 10
      UNION
      SELECT NULL,
      COUNT(*),
      NULL
      FROM Production.ProductModel
      WHERE ProductModelID > 11
      AND ProductModelID < 100
      UNION
      SELECT 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
    Jsem Databáze technolog mít 11+ let bohaté, praktické zkušenosti na Databázové technologie. Jsem Microsoft Certified Professional a podporován titulem Master of Computer Application.
    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

    Nejnovější příspěvky Prashanth Jayaram (zobrazit všechny)
    • 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


    Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *