MySQL UNION - Kompletny samouczek

Anonim

Co to jest związek?

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

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

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

Utwórzmy teraz zapytanie UNION, aby połączyć obie tabele przy użyciu funkcji DISTINCT

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

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

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 przy użyciu ALL

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

Tutaj uwzględniono zduplikowane wiersze, a ponieważ używamy ALL.

Dlaczego warto korzystać ze związków zawodowych

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 zduplikowane rekordy przed wkradaniem 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 instrukcjach SELECT musi być taka sama, aby polecenie UNION działało.
  • Klauzula DISTINCT służy do eliminacji zduplikowanych wartości z zestawu 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 zwracania wszystkich, nawet zduplikowanych wierszy w zapytaniu UNION.

Praktyczne przykłady z wykorzystaniem Środowiska pracy MySQL

W naszym myFlixDB połączmy

Members_number i full_names z tabeli Members

z

movie_id i title z tabeli filmów

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

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

Wykonanie powyższego skryptu w środowisku MySQL na 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