mysql union comprehensive tutorial with union examples
W tym samouczku wyjaśniono polecenie MySQL UNION, jego typy, Union vs Union All oraz przykłady łączenia danych z 2 lub więcej zapytań:
MySQL UNION służy do łączenia wyników z wielu zapytań SELECT w jeden zestaw wyników. Możliwe jest również umieszczenie wszystkich złożonych zapytań / operacji w zapytaniach SELECT i wykonanie UNION z innymi instrukcjami SELECT w celu uzyskania połączonego wyniku.
czym jest zarządzanie danymi testowymi w testowaniu oprogramowania
Domyślną cechą instrukcji UNION byłoby usuwanie zduplikowanych wpisów lub wierszy z wynikowego zestawu wierszy, jednak zapewnia ona sposoby pobierania zduplikowanych rekordów również przy użyciu klauzuli UNION ALL.
Czego się nauczysz:
- Zrozumienie UNII poprzez teorię zbiorów
- Jaki problem rozwiązuje MySQL UNION
- MySQL UNION kontra UNION ALL
- Wniosek
Zrozumienie UNII poprzez teorię zbiorów
Operację UNION można bardzo dobrze zrozumieć na podstawie zasad teorii SET.
Załóżmy, że mamy tabele A i B reprezentowane przez zestawy poniżej i mają one pewne nakładające się dane (lub mogą być również całkowicie niepowiązane) - UNION uwzględni kombinację danych z obu tabel.
Zobaczmy przykład, w którym zestawy A i B mają pewne wspólne elementy. UNION będzie zawierał wszystkie wartości ze zbioru A i B z pominiętymi zduplikowanymi wartościami.
A co, jeśli zbiory A i B są rozłączne i nie zawierają żadnych wspólnych elementów? Tutaj również UNIA zwróci ten sam wynik.
Omówmy scenariusz, w którym zachodzą na siebie elementy między zestawami i chcemy, aby zduplikowane wartości również pojawiały się w zestawie wyników.
MySQL zapewnia sposób, aby to zrobić, używając opcji UNION ALL, jak pokazano na poniższym obrazku.
Jaki problem rozwiązuje MySQL UNION
MySQL UNION jest używany, gdy masz podobne dane w 2 lub więcej tabelach i chcesz zobaczyć połączony widok danych zawartych w obu tabelach zamiast uruchamiania instrukcji SELECT dla poszczególnych tabel.
Na przykład - Załóżmy, że istnieją 2 tabele - Pracownik i Student. Pracujesz nad bazą danych osób, która chce mieć tylko imię i nazwisko, wiek i datę urodzenia wszystkich pracowników i studentów.
Bez UNION będziesz musiał wykonać oddzielne zapytania SELECT dla obu tabel, a następnie wykonać żądane obliczenia z uzyskanym zestawem wyników.
Składnia MySQL UNION
Poniższe zapytania zwrócą UNION 2 lub więcej niż 2 instrukcje SELECT.
SELECT {column1}, {column2} FROM {table1} UNION [ALL | DISTINCT] SELECT {column3}, {column4} FROM {table2} UNION [ALL | DISTINCT] SELECT ...
Spróbujmy zobaczyć różne składniki składni
- Widzimy, że możliwe jest połączenie wielu zapytań SELECT za pomocą funkcji UNION, aby uzyskać wynikowy zestaw wierszy.
- Nazwa kolumny i typy danych: ważne jest, aby zrozumieć, że kolumny, które chcemy połączyć, powinny mieć ten sam lub zgodny typ danych. Na przykład: jeśli masz kolumnę 1 jako STRING, kolumna 3 również powinna być STRING (lub zgodna z STRING).
- Nazwy i pozycje kolumn są określane na podstawie pierwszej instrukcji SELECT w zapytaniu UNION. Na przykład w powyższej składni: kolumna1 i kolumna2 są nazywane kolumnami nagłówka w zestawie wyników, a wartości kolumna3 i kolumna4 są mapowane odpowiednio na kolumnę1 i kolumnę2.
- Wyniki zapytania UNION domyślnie usuwają zduplikowane wpisy. Na przykład, w tym przypadku, jeśli istnieje zduplikowany wpis, który ma dokładne dopasowanie i ma takie same wartości w kolumnach 1 i 2, te wiersze zostaną pominięte w zestawie wyników.
Jeśli potrzebne są duplikaty, możemy skorzystać z opcji „WSZYSTKIE” razem z Unią.
Korzystanie z ODRĘBNY jest domniemana domyślnie. Należy pamiętać, że można go również wyraźnie określić, aby uzyskać większą czytelność.
Zobaczmy przykładowy przykład zapytania UNION.
Załóżmy, że istnieją 2 tabele - pracownik i student - każda z danymi osobowymi.
CREATE TABLE employee (id INT PRIMARY KEY, name VARCHAR(100), age INT, dob DATE, department VARCHAR(100)); CREATE TABLE student (id INT PRIMARY KEY, name VARCHAR(100), age INT, dob DATE, department VARCHAR(100));
Teraz wprowadź fikcyjne dane do obu tych tabel, jak pokazano poniżej:
INSERT INTO employee values (1,'Darren', 32, '1988-05-20', 'ENGINEERING'), (2,'Abhishek', 28, '1992-05-20', 'ACCOUNTING'), (3,'Amit', 30, '1990-09-20', 'ENGINEERING'), (4,'Steven', 40, '1980-05-21', 'HUMAN RESOURCES'), (5,'Kartik', 20, '2000-05-12', 'TRAINEE'); ---------------------------------------------- INSERT INTO student values (1,'Akash', 22, '1998-05-17', 'COMPUTER'), (2,'Ian', 26, '1994-06-18', 'COMPUTER'), (3,'Shirley', 19, '2001-11-20', 'MECHANICAL'), (4,'Joana', 21, '1999-05-21', 'ELECTRONICS'), (5,'Kartik', 20, '2000-05-12', 'COMPUTER');
Jak widać powyżej, celowo dodaliśmy wiersz, który ma te same atrybuty dotyczące imienia i nazwiska, wieku i daty urodzenia.
Zobaczmy teraz, jak możemy połączyć dane w tych dwóch tabelach za pomocą poleceń UNION. Będziemy sprawdzać nazwę użytkownika i wiek z obu tabel.
Prosta UNIA
Pytanie:
SELECT name, age FROM employee UNION SELECT name, age FROM student;
W wyniku zobaczysz 9 rekordów (co oznacza, że powyższe zapytanie pominęło zduplikowany wpis).
Wynik:
Nazwa | wiek |
---|---|
Ian | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | dwadzieścia |
Akash | 22 |
Shirley | 19 |
Joana | dwadzieścia jeden |
UNIA Z UNION ALL
Użycie UNION z klauzulą ALL zapewni, że zduplikowane wpisy również zostaną wyświetlone.
Pytanie:
SELECT name, age FROM employee UNION ALL SELECT name, age FROM student;
Wynik:
Nazwa | wiek |
---|---|
Ian | 26 |
Darren | 32 |
Abhishek | 28 |
Amit | 30 |
Steven | 40 |
Kartik | dwadzieścia |
Akash | 22 |
Shirley | 19 |
Joana | dwadzieścia jeden |
Kartik | dwadzieścia |
UNIA Z Warunkiem
Dodajmy warunki do stwierdzeń SELECT, w których chcemy mieć dane pracowników w wieku poniżej 30 lat i Studentów w wieku poniżej 25 lat.
Pytanie:
SELECT name, age FROM employee where age <30 UNION SELECT name, age FROM student where age < 25;
Wynik:
Nazwa | wiek |
---|---|
Amit | 30 |
Abhishek | 28 |
Kartik | dwadzieścia |
Akash | 22 |
Shirley | 19 |
Joana | dwadzieścia jeden |
Jak widać powyżej, zestaw wyników zawiera połączony wynik z zatwierdzonymi indywidualnymi warunkami SELECT.
Zamawianie wyników UNION
Wyniki zapytania UNION są domyślnie nieuporządkowane.
Aby narzucić porządek według kolumny istniejącej w wynikowym zbiorze, na końcu polecenia UNION można określić klauzulę ORDER BY.
Użyjmy tych samych danych pracownika / studenta i uporządkujmy wyniki UNION rosnąco według wieku.
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY age asc
Wynik:
Nazwa | wiek |
---|---|
Shirley | 19 |
Kartik | dwadzieścia |
Joana | dwadzieścia jeden |
Akash | 22 |
Ian | 26 |
Abhishek | 28 |
Darren | 32 |
Steven | 40 |
Powyższy zestaw wyników jest uporządkowany według wartości wieku w porządku rosnącym. Możemy również użyć aliasów kolumn, aby odwołać się do kolumn w klauzuli ORDER BY.
Na przykład: - Zapytanie podobne do poniższego również da ten sam wynik.
SELECT name as customer_name, age as customer_age FROM employee UNION SELECT name, age FROM student ORDER BY customer_age asc
Istnieje inny sposób użycia klauzuli ORDER BY, podając po prostu pozycję kolumny zamiast jej nazwy.
Na przykład: W powyższym zapytaniu UNION wybieramy imię i nazwisko oraz wiek, co oznacza, że te kolumny znajdują się odpowiednio na pozycjach 1 i 2.
Tak więc, aby ORDER BY wiek, możemy po prostu określić pozycję zamiast rzeczywistej nazwy kolumny.
W związku z tym poniższe zapytanie również da ten sam wynik.
SELECT name, age FROM employee UNION SELECT name, age FROM student ORDER BY 2 asc
MySQL UNION kontra UNION ALL
MySQL udostępnia 2 warianty UNION, tj. WYRÓŻNIENIE UNII i UNIA WSZYSTKO
Należy pamiętać, że DISTINCT jest domniemany, nawet jeśli nie został określony.
Główną różnicą między nimi jest to, że UNION ALL umożliwia łączenie i zwracanie zduplikowanych wierszy, podczas gdy UNION zwraca tylko połączone wiersze, usuwając duplikaty.
Poniższa tabela wyjaśnia szczegóły:
Parametr | UNIA | UNIA WSZYSTKO |
---|---|---|
Definicja | Jest równoważne UNION DISTINCT - ignoruje zduplikowane wiersze danych podczas zwracania wyniku | Zwraca wszystkie wiersze, w tym duplikaty |
Składnia | SELECT {columnList} FROM {table1} UNIA SELECT {columnList} FROM {table2} | SELECT {columnList} FROM {table1} UNIA WSZYSTKO SELECT {columnList} FROM {table2} |
Wymagania dotyczące danych | Połączone dane powinny mieć podobne typy danych i powinny być pobierane w tej samej kolejności podczas pobierania z wielu tabel | To samo co UNION |
Często Zadawane Pytania
P # 1) Czy Union jest szybszy niż JOIN?
Odpowiedź: UNION i JOIN są używane praktycznie do 2 różnych celów.
Technicznie rzecz biorąc, UNION jest znacznie szybszy niż JOIN (szczególnie w przypadku dużych zbiorów danych), ponieważ UNION po prostu łączy wiersze danych z poszczególnych instrukcji SELECT.
P # 2) Co to jest operator UNION ALL?
Odpowiedź: Podobnie jak UNION, operator UNION ALL zwraca również UNION między 2 zapytaniami SELECT, ale różnica polega na tym, że zawiera on również zduplikowane wiersze / wpisy.
P # 3) Jaka jest różnica między UNION a JOIN?
Odpowiedź: Zarówno UNION, jak i JOIN są używane do łączenia danych z 2 lub więcej tabel. Ale jest ogromna różnica pod względem uzyskanego zestawu wyników i sposobu pobierania danych.
Podobieństwa i różnice między JOIN i UNION są wymienione w poniższej tabeli:
UNIA | PRZYSTĄP |
---|---|
Łączy dane z wielu tabel | Łączy dane z wielu tabel |
Nie wymaga żadnych szczególnych warunków do zestawiania lub łączenia danych | JOIN działa na warunku JOIN, który jest wymagany do walidacji danych przychodzących w zestawie wyników |
Dane z różnych tabel są traktowane jako różne wiersze zestawu wyników | Dane z różnych tabel są łączone w jeden wiersz - na przykład wiersz w zestawie wyników może zawierać 2 kolumny z tabeli 1, 3 kolumny z tabeli 2 itd. W zależności od warunku JOIN i zapytania SELECT |
UNION są proste i nieskomplikowane | POŁĄCZENIA wymagają złożonych warunków iw zależności od potrzeb można zastosować wiele typów połączeń, takich jak WEWNĘTRZNE / ZEWNĘTRZNE itp. |
Wniosek
W tym samouczku nauczyliśmy się, jak używać MySQL UNION do łączenia danych z 2 lub więcej instrukcji SELECT.
Instrukcja UNION jest naprawdę pomocna w zestawianiu podobnych danych z dużych zestawów różnych tabel, a następnie przeprowadzaniu analizy połączonych danych.
Polecenie UNION obsługuje również klauzulę ALL, która umożliwia również pobranie zduplikowanych rekordów.
rekomendowane lektury
- Co to jest MySQL i dlaczego jest używany?
- Różnica między SQL a MySQL i SQL Server (z przykładami)
- Połączenie wewnętrzne i połączenie zewnętrzne: dokładna różnica w przykładach
- MySQL JOIN Tutorial: Wewnętrzny, Zewnętrzny, Krzyż, Lewo, Prawo i Ja
- MySQL - samouczek dotyczący tworzenia widoku z przykładami kodu
- MySQL Tworzenie tabeli z przykładami
- Instrukcja MySQL Update - składnia i przykłady aktualizacji zapytania
- Top 40 najlepszych pytań i odpowiedzi do wywiadów MySQL (2021 pytań)