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