В этом учебном пособии вы узнаете, как использовать оператор UNION ALL в SQL Server (Transact-SQL) с синтаксисом и примерами.
Описание
Оператор SQL Server UNION ALL используется для объединения наборов результатов из 2 или более операторов SELECT. Он возвращает все строки из запроса и не удаляет повторяющиеся строки между различными операторами SELECT.
Каждый оператор SELECT в операторе SQL Server UNION ALL должен иметь одинаковое количество полей в наборах результатов с похожими типами данных.
Синтаксис
Синтаксис оператора UNION ALL в SQL Server (Transact-SQL):
FROM tables
[WHERE conditions]
UNION ALL
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
Параметры или аргументы
expression1, expression2, ... expression_n - столбцы или вычисления, которые вы хотите получить.
tables - таблицы, из которых вы хотите получить записи. Должна быть хотя бы одна таблица, перечисленная в предложении FROM.
WHERE conditions - необязательный. Условия, которые должны быть выполнены для выбранных записей.
Примечание
- В обоих операторах SELECT должно быть одинаковое количество выражений.
- Соответствующие столбцы в каждом из операторов SELECT должны иметь похожие типы данных.
- Оператор UNION не удаляет повторяющиеся строки между различными операторами SELECT.
- См. также оператор UNION.
Пример веращающий одно поле.
Рассмотрим пример оператора UNION ALL в SQL Server (Transact-SQL), который возвращает одно поле из нескольких операторов SELECT (и оба поля имеют одинаковый тип данных).
Например:
1 2 3 4 5 |
SELECT product_id FROM products UNION ALL SELECT product_id FROM inventory; |
Этот пример UNION ALL возвратит несколько раз в product_id вашем результирующем наборе, так как product_id находится как в таблице products, так и в таблице inventory. Оператор SQL Server UNION ALL не удаляет дубликаты. Если вы хотите удалить дубликаты, попробуйте использовать оператор SQL Server UNION.
Пример использования ORDER BY
Оператор UNION ALL может использовать предложение ORDER BY для сортировки результатов запроса в SQL Server (Transact-SQL).
Например:
1 2 3 4 5 6 7 8 |
SELECT contact_id, contact_name FROM contacts WHERE site_name = 'yandex.com' UNION ALL SELECT company_id, company_name FROM companies WHERE site_name = 'google.com' ORDER BY 2; |
В этом примере оператора UNION ALL, поскольку имена столбцов различаются между двумя операторами SELECT, более выгодно ссылаться на столбцы в предложении ORDER BY по их позиции в наборе результатов. В этом примере мы отсортировали результаты по contact_name / company_name в порядке возрастания, как обозначено в ORDER BY 2.
Поля contact_name / company_name находятся позиции № 2 в результирующем наборе.