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