В этом учебном пособии вы узнаете, как использовать MySQL оператор UNION ALL с синтаксисом и примерами.
Описание
MySQL оператор UNION ALL используется для объединения наборов результатов из 2 или более предложений SELECT. Он возвращает все строки из запроса и не удаляет повторяющиеся строки между различными предложениями SELECT.
Каждое предложение SELECT в MySQL операторе UNION ALL должно иметь одинаковое количество полей с одинаковыми типами данных в результирующем наборе.
Синтаксис
Синтаксис для оператора UNION ALL в MySQL:
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 (и оба поля имеют одинаковый тип данных):
1 2 3 4 5 |
SELECT supplier_id FROM suppliers UNION ALL SELECT supplier_id FROM orders; |
Этот MySQL оператор UNION ALL будет возвращать supplier_id несколько раз в вашем результирующем наборе, если supplier_id находится как в таблице suppliers, так и в таблице orders. Оператор MySQL UNION ALL не удаляет дубликаты. Если вы хотите удалить дубликаты, попробуйте использовать оператор MySQL UNION.
Пример с использованием ORDER BY
MySQL оператор UNION ALL может использовать ORDER BY, для сортировки результирующего набора.
Например:
1 2 3 4 5 6 7 8 |
SELECT supplier_id, supplier_name FROM suppliers WHERE state = 'California' UNION ALL SELECT company_id, company_name FROM companies WHERE company_id > 3000 ORDER BY 2; |
Поскольку имена столбцов различаются между двумя предложениями SELECT, то в MySQL операторе UNION ALL более выгодно ссылаться на столбцы в предложении ORDER BY по их позиции в результирующем наборе. В этом примере мы отсортировали результаты по supplier_name / company_name в порядке возрастания, как обозначено ORDER BY 2.
Поля supplier_name / company_name находятся позиции № 2 в результирующем наборе.