MySQL UNION – повний підручник
Що таке Союз?
Об’єднання об’єднує результати кількох запитів SELECT у консолідований набір результатів.
Єдиною вимогою для цього є те, що кількість стовпців має бути однаковою для всіх запитів SELECT, які потрібно об'єднати.
Припустимо, що ми маємо дві таблиці, як показано нижче
Давайте тепер створимо запит 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 |