MySQL UNIA – Kompletny samouczek

Co to jest Unia?

Związki łączą wyniki wielu zapytań SELECT w skonsolidowany zestaw wyników.

Jedynym wymaganiem, aby to zadziałało, jest to, że liczba kolumn we wszystkich zapytaniach SELECT, które należy połączyć, powinna być taka sama.

Załóżmy, że mamy dwie tabele w następujący sposób

MySQL UNIONMySQL UNION

Utwórzmy teraz zapytanie UNION, aby połączyć obie tabele za pomocą DISTINCT

SELECT column1, column2 FROM `table1`
UNION DISTINCT
SELECT  column1,column2  FROM `table2`;

Tutaj zduplikowane wiersze są usuwane i zwracane są tylko unikalne wiersze.

Odrębny dla Unii

Uwaga: MySQL używa klauzuli DISTINCT jako domyślnej podczas wykonywania zapytań UNION, jeśli nic nie jest określone.

Utwórzmy teraz zapytanie UNION, aby połączyć obie tabele za pomocą ALL

SELECT `column1`,` column1` FROM `table1`
UNION ALL
SELECT ` column1`,` column1`  FROM `table2`;

Tutaj uwzględnione są zduplikowane wiersze i ponieważ używamy ALL.

Unia-Wszystko

Dlaczego warto używać Unii?

Załóżmy, że w projekcie bazy danych występuje błąd i używasz dwóch różnych tabel przeznaczonych do tego samego celu. Chcesz skonsolidować te dwie tabele w jedną, pomijając wszelkie zduplikowane rekordy przedostające się do nowej tabeli. W takich przypadkach możesz użyć UNION.

Podsumowanie

  • Polecenie UNION służy do łączenia więcej niż jednego wyniku zapytania SELECT w jedno zapytanie zawierające wiersze ze wszystkich zapytań wybierających.
  • Liczba kolumn i typów danych w pliku WYBIERZ instrukcje muszą być takie same, aby polecenie UNION mogło działać.
  • Klauzula DISTINCT służy do eliminowania zduplikowanych wartości ze zbioru wyników zapytania UNION. MySQL używa klauzuli DISTINCT jako domyślnej podczas wykonywania zapytań UNION, jeśli nic nie jest określone.
  • Klauzula ALL służy do zwrócenia wszystkich, nawet zduplikowanych wierszy w zapytaniu UNION.

Praktyczne przykłady użycia MySQL Workbench

W naszym myFlixDB połączmy

numer_członkostwa i pełne imię i nazwisko z tabeli Członkowie

w

identyfikator_filmu i tytuł z tabeli filmów

Możemy użyć następującego zapytania

SELECT `membership_number`,`full_names` FROM `members`
UNION
SELECT `movie_id`,`title` FROM `movies`;

Wykonanie powyższego skryptu w MySQL Workbench w stosunku do myflixdb daje nam następujące wyniki pokazane poniżej.

membership_number full_names
1 Janet Jones
2 Janet Smith Jones
3 Robert Phil
4 Gloria Williams
5 Leonard Hofstadter
6 Sheldon Cooper
7 Rajesh Koothrappali
8 Leslie Winkle
9 Howard Wolowitz
16 67% Guilty
6 Angels and Demons
4 Code Name Black
5 Daddy's Little Girls
7 Davinci Code
2 Forgetting Sarah Marshal
9 Honey mooners
19 movie 3
1 Pirates of the Caribean 4
18 sample movie
17 The Great Dictator
3 X-Men