MySQL СОЮЗ – Полное руководство

Что такое Союз?

Объединения объединяют результаты нескольких запросов 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`;

Здесь включены повторяющиеся строки, и поскольку мы используем ВСЕ.

Союз-Все

Зачем использовать союзы?

Предположим, в вашей базе данных есть ошибка, и вы используете две разные таблицы, предназначенные для одной и той же цели. Вы хотите объединить эти две таблицы в одну, не допуская попадания повторяющихся записей в новую таблицу. В таких случаях вы можете использовать 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