MySQL UNION - Полное руководство

Anonim

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

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