UNION 操作 (Microsoft Access SQL)
适用于:Access 2013、Office 2013
创建联合查询,该查询将两个或两个以上的独立查询或表的结果组合在一起。
语法
[TABLE] query1 UNION [ALL] [TABLE] query2 [UNION [ALL] [TABLE] queryn [ ... ]]
UNION 操作包含以下部分:
Part |
说明 |
---|---|
query1-n |
一个 SELECT 语句、存储查询的名称或在 TABLE 关键字后面的存储表的名称。 |
说明
可以在单个 UNION 操作中以任何组合方式合并两个或两个以上的查询、表和 SELECT 语句的结果。 下面的示例将一个名为 New Accounts 的现有表和一个 SELECT 语句进行合并:
TABLE [New Accounts] UNION ALL
SELECT *
FROM Customers
WHERE OrderAmount > 1000;
默认情况下,使用 UNION 操作时不会返回重复的记录;但是,可以包含 ALL 谓词以确保返回所有记录。 这样也会使查询运行得更快。
在 UNION 操作中的所有查询必须请求相同数量的字段;但是,这些字段不必都具有相同的大小或数据类型。
请只在第一个 SELECT 语句中使用别名,因为别名在其他语句中会被忽略。 在 ORDER BY 子句中,请根据第一个 SELECT 语句中使用的字段名来引用该字段。
注意
示例
此示例检索巴西所有供应商和客户的名称和城市。 它调用 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