大多数 SQL 查询使用单个语句从一个或多个表返回数据。 SQL 还允许您同时运行多个单独的查询并将结果显示为单个数据集。这种组合查询通常称为连接或复杂查询。
SQL 查询使用 UNION 运算符进行组合。为此,您需要指定每个请求 SELECT 并在它们之间放置关键字 UNION。一次常规查询中 UNION 运算符的使用次数没有限制。在上一节中,我们注意到 MS Access 不具备创建完整外联合的能力,现在我们将了解如何通过 UNION 运算符来实现这一点。
Run SQLSELECT *
FROM Sumproduct
LEFT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
UNION
SELECT *
FROM Sumproduct
RIGHT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
我们看到查询显示了第一个表和第二个表中的所有列,无论所有记录是否在另一个表中都有对应项。
还值得注意的是,在许多情况下,我们可以使用具有许多条件的 WHERE 子句来代替 UNION,并得到类似的结果。不过,通过UNION,记录看起来更加简洁、清晰。
编写组合查询时还需要遵循一定的规则:
使用 UNION 的查询会自动从查询结果集中删除所有重复行(换句话说,其行为类似于单个 SELECT 语句中具有多个条件的 WHERE 子句)。这是 UNION 运算符的默认行为,但我们可以根据需要更改它。为此,我们应该使用运算符 UNION ALL 而不是 UNION。
SELECT 语句的结果使用 ORDER BY 语句进行排序。使用 UNION 组合查询时,只能使用一个 ORDER BY 子句,并且必须将其放置在最后一个 SELECT 语句中。事实上,在实践中,将部分结果按一种顺序排序,而另一部分按另一种顺序排序并没有多大意义。因此,多个句子 ORDER BY 是不允许的。