MySQL UNION - повний посібник

Anonim

Що таке союз?

Профспілки поєднують результати з декількох запитів SELECT у зведений набір результатів.

Єдиними вимогами для цього є те, що кількість стовпців має бути однаковою з усіх запитів SELECT, які потрібно об’єднати.

Припустимо, у нас є дві таблиці наступним чином

Давайте тепер створимо запит UNION, що поєднує обидві таблиці за допомогою DISTINCT

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

Тут видаляються повторювані рядки, а повертаються лише унікальні рядки.

Примітка: MySQL використовує речення DISTINCT за замовчуванням при виконанні запитів UNION, якщо нічого не вказано.

Давайте тепер створимо запит UNION, що поєднує обидві таблиці за допомогою ALL

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

Тут включені повторювані рядки і оскільки ми використовуємо ALL.

Навіщо використовувати профспілки

Припустимо, у вашому дизайні бази даних є недолік, і ви використовуєте дві різні таблиці, призначені для тієї ж мети. Ви хочете об’єднати ці дві таблиці в одну, опустивши повторювані записи, щоб вони не потрапляли до нової таблиці. У таких випадках ви можете використовувати UNION.

Резюме

  • Команда UNION використовується для об'єднання кількох результатів запиту SELECT в один запит, що містить рядки з усіх вибраних запитів.
  • Кількість стовпців і типів даних у операторах SELECT має бути однаковою, щоб команда UNION працювала.
  • Речення DISTINCT використовується для усунення повторюваних значень із набору результатів запиту UNION. MySQL використовує речення DISTINCT за замовчуванням при виконанні запитів UNION, якщо нічого не вказано.
  • Речення ALL використовується для повернення всіх навіть повторюваних рядків у запиті UNION.

Практичні приклади використання робочого середовища MySQL

У нашому myFlixDB дозволяє поєднувати

member_number та full_names з таблиці Members

з

ідентифікатор фільму та заголовок із таблиці фільмів

Ми можемо використати наступний запит

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

Виконання вищезазначеного сценарію в робочому середовищі MySQL проти myflixdb дає нам такі результати, показані нижче.

 
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