MySQL UNION – повний підручник

Що таке Союз?

Об’єднання об’єднує результати кількох запитів SELECT у консолідований набір результатів.

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

Припустимо, що ми маємо дві таблиці, як показано нижче

MySQL СОЮЗMySQL СОЮЗ

Давайте тепер створимо запит UNION для об’єднання обох таблиць за допомогою DISTINCT

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

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

Союзно-відмінний

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

Давайте тепер створимо запит UNION для об’єднання обох таблиць за допомогою ALL

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

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

Союзно-Всес

Навіщо використовувати Союзи?

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

Підсумки

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

Використання практичних прикладів MySQL верстак

У нашій myFlixDB дозволяємо комбінувати

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

з

movie_id і назва з таблиці фільмів

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

SELECT `membership_number`,`full_names` FROM `members`
UNION
SELECT `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