UNION ALL оператор MySQL

В этом учебном пособии вы узнаете, как использовать MySQL оператор UNION ALL с синтаксисом и примерами.

Описание

MySQL оператор UNION ALL используется для объединения наборов результатов из 2 или более предложений SELECT. Он возвращает все строки из запроса и не удаляет повторяющиеся строки между различными предложениями SELECT.

Каждое предложение SELECT в MySQL операторе UNION ALL должно иметь одинаковое количество полей с одинаковыми типами данных в результирующем наборе.

Синтаксис

Синтаксис для оператора UNION ALL в MySQL:

SELECT expression1, expression2, … expression_n
FROM tables
[WHERE conditions]
UNION ALL
SELECT expression1, expression2, … expression_n
FROM tables
[WHERE conditions];

Параметры или аргументы

expression1, expression2, … expression_n — столбцы или вычисления, которые вы хотите получить.
tables — таблицы, из которых вы хотите получить записи. Должна быть хотя бы одна таблица, перечисленная в операторе FROM.
WHERE conditions — необязательный. Условия, которые должны быть выполнены для выбранных записей.

Примечание

В обоих операторах SELECT должно быть одинаковое количество expression.
Имена столбцов из первого предложения SELECT используются в качестве имен столбцов для набора результатов.

Пример возвращающий одно поле

Ниже приведен пример MySQL оператора UNION ALL, который возвращает одно поле из нескольких предложений SELECT (и оба поля имеют одинаковый тип данных):

Этот MySQL оператор UNION ALL будет возвращать supplier_id несколько раз в вашем результирующем наборе, если supplier_id находится как в таблице suppliers, так и в таблице orders. Оператор MySQL UNION ALL не удаляет дубликаты. Если вы хотите удалить дубликаты, попробуйте использовать оператор MySQL UNION.

Пример с использованием ORDER BY

MySQL оператор UNION ALL может использовать ORDER BY, для сортировки результирующего набора.
Например:

Поскольку имена столбцов различаются между двумя предложениями SELECT, то в MySQL операторе UNION ALL более выгодно ссылаться на столбцы в предложении ORDER BY по их позиции в результирующем наборе. В этом примере мы отсортировали результаты по supplier_name / company_name в порядке возрастания, как обозначено ORDER BY 2.

Поля supplier_name / company_name находятся позиции № 2 в результирующем наборе.