Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При использовании операторов UNION следует придерживаться таких правил:
Все списки выборки в инструкциях, комбинируемые с помощью оператора UNION, должны содержать одинаковое число выражений (имен столбцов, арифметических выражений, статистических функций и т.д.).
Соответствующие столбцы в результирующих наборах, комбинируемых оператором UNION, так же как и любой поднабор столбцов, используемых в отдельных запросах, должны принадлежать к одному и тому же типу данных, обладать возможностью неявного преобразования данных между двумя типами или поддерживать явное преобразование. Например, операция UNION между столбцами данных, один из которых принадлежит к типу datetime, а другой — к типу binary, работать не будет, если только не задано явное преобразование. Однако операция UNION между столбцами, принадлежащими к типам данных money и int, работать будет, так как они могут быть преобразованы неявно.
Столбцы типа данных xml должны быть эквивалентны друг другу. Все столбцы должны быть либо типизированными для XML-схемы, либо нетипизированными. Типизированные столбцы должны относиться к одной и той же коллекции XML-схем.Соответствующие столбцы результирующего набора в отдельных инструкциях, комбинируемые оператором UNION, должны указываться в одном и том же порядке, так как оператор UNION сравнивает столбцы один к одному в порядке, указанном в отдельных запросах.
Ниже приведен пример.TABLE3TABLE4ABCABINTCHAR(4)CHAR(4)CHAR(4)FLOAT-------------------------------1ABCJKLJKL1.0002DEFMNOMNO5.0003GHIPQRВыполните следующий запрос:
SELECT a, b FROM table3 UNION SELECT b, a FROM table4Результирующий набор:
a b -------- ----- 1.000000 abc 2.000000 def 3.000000 ghi 1.000000 jkl 5.000000 mnoПри объединении различных типов данных в операции UNION эти типы преобразуются согласно правилам приоритета типов данных. В предыдущем примере значения типа int преобразовались в тип float, так как тип float имеет более высокий приоритет, чем тип int. Дополнительные сведения см. в разделе Приоритет типов данных (Transact-SQL).
Результатом этого запроса является сообщение об ошибке, так как типы данных соответствующих столбцов несовместимы:SELECT b, c FROM table3 UNION SELECT a, b FROM table4Имена столбцов в таблице, полученной в результате операции UNION, взяты из первого отдельного запроса инструкции UNION. Обращение к столбцу результирующего набора по новому имени (например в предложении ORDER BY) должно производиться таким же образом, как и в первой инструкции SELECT:
SELECT city AS Cities FROM stores_west UNION SELECT city FROM stores_east ORDER BY city
См. также
Основные понятия
Объединение наборов результатов с помощью оператора UNION
Использование операторов UNION, EXCEPT и INTERSECT с инструкциями языка Transact-SQL