Поделиться через


Операция UNION (Microsoft Access SQL)

Область применения: Access 2013, Office 2013

Создает запрос на объединение, выполняющий объединение результатов двух или более независимых запросов или таблиц.

Синтаксис

[ТАБЛИЦА] query1 UNION [ALL] [TABLE] query2 [UNION [ALL] [TABLE] queryn [ ... ]]

Операция UNION состоит из следующих частей:

Часть

Описание

query1-n

Оператор SELECT, имя сохраненного запроса или имя сохраненной таблицы с предшествующим ключевым словом TABLE.

Комментарии

Вы можно выполнить слияние результатов двух или более запросов, таблиц и операторов SELECT в любой последовательности в одной операции UNION. В приведенном ниже примере выполняется объединение существующей таблицы с именем New Accounts и оператора SELECT:

TABLE [New Accounts] UNION ALL 
SELECT * 
FROM Customers 
WHERE OrderAmount > 1000;

По умолчанию не возвращаются повторяющиеся записи при использовании операции UNION; тем не менее, вы можете включить предикат ALL, чтобы гарантировать, что будут возвращаться все записи. Это также сокращает время выполнения запроса.

Все запросы в операции UNION должны запрашивать одинаковое количество полей; тем не менее, поля не должны иметь одинаковый размер или тип данных.

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

Примечание.

  • Вы можете использовать предложения GROUP BY или HAVING в каждом аргументе запроса, чтобы сгруппировать возвращаемые данные.
  • Вы можете использовать предложение ORDER BY в конце последнего аргументазапроса для отображения возвращаемых данных в указанном порядке.

Пример

В этом примере показано получение названий и городов всех поставщиков и клиентов в Бразилии. В этом примере выполняется вызов процедуры EnumFields, который вы можете найти в примере для оператора SELECT.

    Sub UnionX() 
     
        Dim dbs As Database, rst As Recordset 
     
        ' Modify this line to include the path to Northwind 
        ' on your computer. 
        Set dbs = OpenDatabase("Northwind.mdb") 
         
        ' Retrieve the names and cities of all suppliers  
        ' and customers in Brazil. 
        Set rst = dbs.OpenRecordset("SELECT CompanyName," _ 
            & " City FROM Suppliers" _ 
            & " WHERE Country = 'Brazil' UNION" _ 
            & " SELECT CompanyName, City FROM Customers" _ 
            & " WHERE Country = 'Brazil';") 
         
        ' Populate the Recordset. 
        rst.MoveLast 
         
        ' Call EnumFields to print the contents of the  
        ' Recordset. Pass the Recordset object and desired 
        ' field width. 
        EnumFields rst, 12 
     
        dbs.Close 
     
    End Sub