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 外连接限制

注意

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

对于 Transact-SQL 外连接有若干限制:

  • 如果您指定了某一外连接并对来自该外连接的提供空值的表的某一列指定了限定,则结果可能不是您预期的结果。查询中的限定不从结果集中排除行,而是影响结果集的这些行中出现的值。对于不满足限定的行,在提供空值的表中显示 NULL 值。

  • 您不能在一个查询中混合使用 ANSI/ISO SQL 语法和 Transact-SQL 外连接语法。如果视图是使用用于某一外连接的一个方言定义的,则必须使用同一方言来用于对该视图的任何外连接查询。

  • 提供空值的表不能同时涉及 Transact-SQL 外连接和常规连接,或同时涉及两个外连接。例如,不允许以下 WHERE 子句,因为表 S 违反上述限制。

    WHERE R.x *= S.x
    AND S.y = T.y

    如果您无法重写查询以避免在外连接和常规连接子句中都使用同一个表,则必须将语句分成两个单独的查询,或者只使用 ANSI/ISO SQL 语法。

  • 如果连接条件涉及外连接的提供空值的表,则您不能使用包含这样的连接条件的子查询。例如,不允许使用以下 WHERE 子句:

    WHERE R.x *= S.y
    AND EXISTS ( SELECT *
                 FROM T
                 WHERE T.x = S.x )