SQLShack (Polski)

0 Comments

Ten artykuł dostarczy głębokiego zagłębienia się w operatora SQL Union, opisując jego wiele zastosowań wraz z przykładami i zbadać kilka typowych pytań, takich jak różnice między Union a Union All.

aby spełnić rzeczywiste wymagania dotyczące danych, może być konieczne połączenie zestawów wyników z wielu źródeł danych, aby móc analizować dane lub tworzyć nowe zestawy danych. Zbiory danych mogą być identyczne, ale są szanse, że odwołują się do różnych tabel., Czy istnieje sposób na połączenie danych w jednym zapytaniu? Czy operatory Set są realną opcją? Zacznijmy od tego, jak niektórzy z obecnych operatorów mogą pomóc nam sprostać tym wspólnym wyzwaniom.,n vs Union All

  • składnia operatora SQL
  • Jak używać prostej klauzuli SQL Union w instrukcji select
  • Jak używać SQL Union z zapytaniami, które mają klauzulę WHERE
  • Jak używać SQL Union z zapytaniami, które mają klauzulę WHERE i klauzulę order by
  • Jak używać SQL Union i SQL Pivot
  • klauzule
  • operatory

    operator to symbol lub słowo kluczowe definiujące akcję wykonywaną na jednym lub kilku wyrażeniach w instrukcji SELECT.,

    Operator Set

    przejdźmy do szczegółów operatorów Set W Sql serverze i jak ich używać

    W Sql serverze są cztery podstawowe operatory Set:

    1. Union
    2. Union All
    3. Z wyjątkiem

    4. INTERSECT

    Union

    operator Union łączy wyniki dwóch lub więcej zapytań w osobny sposób.pojedynczy zestaw wyników, który zawiera wszystkie wiersze należące do wszystkich zapytań w Unii. W tej operacji łączy jeszcze dwa zapytania i usuwa duplikaty.,

    na przykład tabela 'A' ma 1,2 i 3, a Tabela 'B' ma 3,4,5.,

    Unia
    Wybierz 2
    Unia
    wybierz 3
    (
    wybierz 3
    Unia
    wybierz 4
    Unia
    wybierz 5
    );

    na wyjściu możesz zobaczyć odrębną listę rekordów z dwóch zestawów wyników

    wszystkie

    gdy szukasz w Union vs union wszystkie uważamy, że są one dość podobne, ale mają pewne istotne różnice z perspektywy wyników.,

    operator Unii łączy wyniki dwóch lub więcej zapytań w jeden zestaw wyników, który zawiera wszystkie wiersze należące do wszystkich zapytań w Unii. W prosty sposób łączy dwa lub więcej zestawów wierszy i utrzymuje duplikaty.

    na przykład tabela 'A' ma 1,2 i 3, a Tabela 'B' ma 3,4,5.,iv>

    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    select 1 ID
    Union
    select 2
    Union
    select 3
    )
    Union all
    (
    select 3
    Union
    select 4
    Union
    select 5
    );

    na wyjściu można również zobaczyć wszystkie wiersze zawierające zduplikowane wpisy.,>4

    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    (
    wybierz 1 ID
    Unia
    wybór 2
    Unia
    wybierz 3
    )
    przecinają się przyjaciel
    (
    wybierz 3
    Unia
    wybierz 4
    Unia
    wybierz 5
    );

    wiersz '3′ jest wspólne między dwoma zestawami wynikowymi.,

    EXCEPT

    operator EXCEPT wyświetla wiersze w pierwszym, które nie są w drugim.,/div>

    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    div>

    (
    select 1
    Union
    select 2
    Union
    select 3
    )
    except
    (
    select 3 B
    Union
    select 4
    Union
    select 5
    );

    wymień nazwę-wspólne Ciągi z pierwszego zestawu.,

    Uwaga: Bardzo łatwo jest wizualizować Operator zestawu za pomocą diagramu Venna, gdzie każda z tabel jest reprezentowana przez przecinające się kształty. Przecięcia kształtów, w których tabele nakładają się na siebie, są wierszami, w których spełniony jest warunek.,olumny zdefiniowane w każdym zapytaniu muszą mieć taką samą kolejność

  • kolejne zestawy wierszy instrukcji SQL muszą być zgodne z typem danych pierwszego zapytania
  • nawiasy mogą konstruować inne operatory zestawów w tej samej instrukcji
  • możliwe jest posiadanie klauzuli ORDER BY, ale powinna to być ostatnia Instrukcja grupy SQL
  • i klauzule posiadające mogą być stosowane do poszczególnych zapytań
  • Uwaga:

    1. operatory te usuwają duplikaty, z wyjątkiem Unii wszystkie operatory
    2. wyjściowe nazwy kolumn są odniesione z pierwszego zapytania i.,e. gdy uruchomimy polecenie SELECT z dowolnym operatorem Set i zestawem wyników każdego z zapytań może mieć różne nazwy kolumn, więc wynik polecenia SELECT odnosi się do nazw kolumn z pierwszego zapytania w operacji.
    3. SQL JOIN jest częściej używany do łączenia kolumn z wielu powiązanych tabel, podczas gdy operatory SET łączą wiersze z wielu tabel.,
    4. gdy typy wyrażeń są takie same, ale różnią się dokładnością, skalą lub długością, wynik jest określany na podstawie tych samych zasad łączenia wyrażeń

    przykłady:

    następujące zapytania T-SQL są przygotowywane i uruchamiane w bazie danych Adventureworks2014. Możesz pobrać przykładową bazę danych AdventireWorks2014 tutaj

    1. Jak używać prostej klauzuli SQL Union w instrukcji select

      w tym przykładzie zestaw wyników zawiera oddzielny zestaw wierszy z pierwszego i drugiego zestawu.,Poniższy przykład opiera się na zasadzie 1, 3 & 5.,

      wybór 1
      Unia
      wybór 2
      Unia
      wybierz 3
      )
      Unia
      (
      wybierz 3 B
      Unia
      wybierz 4
      Unia
      wybierz 5
      )
      Unia
      (
      wybierz 8 z
      Unia
      Wybierz 9
      Unia
      wybór 1
      )
      ) t;

      wyjście połączenie Unii i Unii wszystkich operatorów za pomocą nawiasów.,

    2. Jak używać SQL Union z zapytaniami, które mają klauzulę WHERE

      poniższy przykład pokazuje użycie Union w dwóch instrukcjach SELECT z klauzulą WHERE I ORDER BY.,

      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.,Nazwa
      z produkcji.ProductModel P2
      gdzie P2.ProductModelID IN (3, 4)
      ORDER BY P1.Name;

    3. Jak używać klauzuli SELECT INTO z SQL Union

      poniższy przykład tworzy nowy dbo.atrapa tabeli wykorzystującej klauzulę INTO w pierwszej instrukcji SELECT, która przechowuje końcowy zestaw wyników połączenia kolumn ProductModel i name z dwóch różnych zestawów wyników., W tym przypadku jest wyprowadzany z tej samej tabeli, ale w rzeczywistej sytuacji mogą to być również dwie różne tabele. Poniższy przykład opiera się na regule 1 , 2 i 4.

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      DROP TABLE IF EXISTS 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 używać SQL Union z zapytaniami, które mają klauzulę WHERE i ORDER BY

      jest to możliwe tylko wtedy, gdy użyj funkcji top lub zagregowanych w każdym zestawieniu select operatora unijnego. W tym przypadku, top 10 wierszy są wymienione z każdego zestawu wyników i połączone wiersze za pomocą klauzuli Unii, aby uzyskać wynik końcowy. Widzisz również, że klauzula order by jest umieszczona we wszystkich instrukcjach select.,

      1
      2
      3

      div>

      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      wybierz.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
      WHERE ProductModelID IN(5, 6)
      ORDER BY Name DESC
      ) b;

    5. Jak używać SQL Union i SQL pivot

      w poniższym przykładzie staramy się połączyć więcej niż jeden zestaw wyników. W realnej sytuacji możesz mieć numery finansowe z różnych regionów lub działów, a tabele mogą mieć te same kolumny i typy danych, ale chcesz umieścić je w jednym zestawie wierszy i w jednym raporcie., W takim scenariuszu skorzystałbyś z klauzuli unijnej i bardzo łatwo jest połączyć wyniki i przekształcić dane w bardziej sensowny raport.

      w tym przykładzie Model produktu jest klasyfikowany do Top10, Top100, Top 100 i przekształca wiersze jako zagregowany zestaw wartości w odpowiednie kolumny. Poniższy przykład opiera się na zasadzie 2.,/div>

      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      div> 14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      wybierz Max(top10) top10,
      Max(Top100) Top100,
      Max(TOP1000) Top100
      from the
      (
      select count(*) TOP10,
      0 Top100,
      0 TOP1000
      from production.,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
      gdzie ProductModelID > 101
      ) T;

      wartości NULL są bardzo ważne dla operatorów zestawu i są traktowane jako wartości drugorzędne.klasowa baza danych. Ponieważ null są uważane za unikalne i jeśli dwa wiersze mają NULL w tej samej kolumnie, to będą one uważane za identyczne, więc w takim przypadku porównujesz NULL do NULL i otrzymujesz równość. W poniższym przykładzie widać użycie wartości NULL. W tym przypadku jest on obsługiwany z funkcją agregatu, max.,

      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      wybierz max(TOP10) TOP10,
      max(Top100) Top100,
      max(TOP1000) Top100
      from the
      (
      select count(*) top10,
      null Top100,
      null TOP1000
      from production.,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
      gdzie ProductModelID > 101
      ) T;

    jak używać SQL union z group and having clauses

    poniższe przykłady używają operatora union do łączenia wyniku tabeli, w której wszystkie mają klauzulę warunkową zdefiniowaną za pomocą group by I having clause.

    LastName jest przetwarzane przez podanie warunków w klauzuli having.

    poniższy przykład opiera się na zasadzie 5.,

    1
    2
    3

    div>

    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    div>

    wybierz PP.lastname,
    COUNT(*) repeatedtwice,
    0 Repeatedthrice
    od osoby.Człowiek jak pp
    dołącz do HumanResources.Pracownik A E O E. Identyfikator businessentityid = polipropylen.,Business
    GROUP BY pp.lastname
    HAVING COUNT (*) = 2
    UNION
    SELECT pp.LastName,
    0,
    COUNT(*) NtoZRange
    FROM Person.Osoba jako pp
    dołącz do zasobów ludzkich.Pracownik jako e NA e. Biznesentitiid = pp.Business
    GROUP BY pp.,LastName
    mając COUNT(*) > 2;

    widzimy, że nazwiska są wyprowadzane w dwóch różnych kolumnach za pomocą operatora unijnego

    to wszystko na teraz…

    podsumowanie

    do tej pory zajęliśmy się różnymi dostępnymi opcjami i regułami, aby używać operatorów set i zrozumieć, kiedy ich używać. Przy ustalaniu, czy używać Union vs Union, należy wziąć pod uwagę kilka punktów., Użyj Union All, jeśli wiesz, że zestawy wyników z wielu zapytań nie nakładają się ani nie generują duplikatów i pamiętaj, że jeśli chcesz użyć nawiasów, możesz to zrobić. Można również obracać i przekształcać wyjście.

    Po prostu upewnij się, że typy danych pasują do siebie, a jeśli chcesz wykonać zamówienie, zrób to na końcu po uruchomieniu wszystkich zestawów zapytań. Z natury rzeczy, jeśli chodzi o Union vs Union All, Union All jest szybszy niż Union; ponieważ operatorzy unijni ponoszą dodatkowe koszty, aby wyeliminować duplikaty.

    Mam nadzieję, że spodobał ci się ten artykuł o operatorze SQL Union., Zachęcamy do zadawania pytań w komentarzach poniżej.

    • Autor
    • Ostatnie posty
    jestem technologiem baz danych z ponad 11-letnim bogatym, praktycznym doświadczeniem w technologiach bazodanowych. Jestem Microsoft Certified Professional i poparty dyplomem magistra aplikacji komputerowej.
    moją specjalnością jest projektowanie & implementacja rozwiązań o wysokiej dostępności i wieloplatformowa migracja DB., Obecnie pracujące technologie to SQL Server, PowerShell, Oracle i MongoDB.,
    Zobacz wszystkie posty Prashanth Jayaram

    najnowsze posty Prashanth Jayaram (Zobacz wszystkie)
    • szybki przegląd audytu bazy danych w SQL – 28 stycznia 2021
    • jak skonfigurować synchronizację danych usługi Azure między bazami danych usługi Azure SQL a lokalnym serwerem SQL Server-20 stycznia 2021
    • jak wykonywać operacje importu/eksportu bazy danych usługi Azure SQL przy użyciu programu PowerShell – 14 stycznia 2021


    Dodaj komentarz

    Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *