Что такое союз?
Объединения объединяют результаты нескольких запросов 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`;
Здесь включены повторяющиеся строки, и поскольку мы используем ВСЕ.
Зачем использовать союзы
Предположим, в вашей базе данных есть недостаток, и вы используете две разные таблицы, предназначенные для одной и той же цели. Вы хотите объединить эти две таблицы в одну, не допуская попадания повторяющихся записей в новую таблицу. В таких случаях вы можете использовать UNION.
Резюме
- Команда UNION используется для объединения нескольких результатов запроса SELECT в один запрос, содержащий строки из всех запросов выбора.
- Чтобы команда UNION работала, количество столбцов и типов данных в операторах SELECT должно быть одинаковым.
- Предложение DISTINCT используется для удаления повторяющихся значений из набора результатов запроса UNION. MySQL использует предложение DISTINCT по умолчанию при выполнении запросов UNION, если ничего не указано.
- Предложение ALL используется для возврата всех даже повторяющихся строк в запросе UNION.
Практические примеры использования MySQL Workbench
В нашем myFlixDB позволяет объединить
member_number и full_names из таблицы Members
с
movie_id и title из таблицы фильмов
Мы можем использовать следующий запрос
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 |