Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 查询和修改数据 » 连接:从多个表检索数据 » 内连接和外连接

 

Transact-SQL 外连接(*= 或 =*)

注意

不建议使用 Transact-SQL 外连接运算符 *= 和 =*,在以后的版本中将不再提供支持。

与 ANSI/ISO SQL 标准相符,SQL Anywhere 支持 LEFT OUTER、RIGHT OUTER 和 FULL OUTER 关键字。为与 Adaptive Server Enterprise 版本 12 以前的版本兼容,只要 tsql_outer_joins 数据库选项设置为 On,SQL Anywhere 也支持与这些关键字相对应的 Transact-SQL 运算符 *= 和 =*。请参见tsql_outer_joins 选项 [兼容性]

有一些与 Transact-SQL 语义有关的限制和可能存在的问题。有关 Transact-SQL 外连接的详细论述,请参见白皮书 Semantics and Compatibility of Transact-SQL Outer Joins,您可从以下网址获得该白皮书 [external link] http://www.sybase.com/detail?id=1017447

在 Transact-SQL 方言中,您通过在 FROM 子句中提供以逗号分隔的表列表并在 WHERE 子句中使用特殊运算符 *= 或 =* 来创建外连接。在 Adaptive Server Enterprise 版本 12 以前的版本中,连接条件必须出现在 WHERE 子句中(不支持 ON 子句)。

小心

创建外连接时,不要将 *= 语法与 ON 子句语法混合使用。这同样适用于在查询中引用的视图。

示例

以下左外连接列出所有客户并查找这些客户的订单日期(如果有):

SELECT GivenName, Surname, OrderDate
FROM Customers, SalesOrders
WHERE Customers.ID *= SalesOrders.CustomerID
ORDER BY OrderDate;

该语句等效于以下语句,后者使用了 ANSI/ISO 语法:

SELECT GivenName, Surname, OrderDate
FROM Customers LEFT OUTER JOIN SalesOrders
ON Customers.ID = SalesOrders.CustomerID
ORDER BY OrderDate;

Transact-SQL 外连接限制
将视图与 Transact-SQL 外连接一起使用
空值是如何影响 Transact-SQL 连接的