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

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 查询和修改数据 » 连接:从多个表检索数据 » 显式连接条件(ON 子句)

 

使用 WHERE 子句用于连接条件

除了使用外连接的情况之外,您可以在 WHERE 子句中指定连接条件来代替 ON 子句。但是,您应该知道,如果查询包含外连接,则 WHERE 子句和 ON 子句两者之间可能存在语义差别。

ON 子句是 FROM 子句的一部分,因此在 WHERE 子句之前进行处理。除了外连接,结果通常不会不同。在外连接中,使用 WHERE 子句可能会将连接转换为内连接。

在决定是将连接条件放置于 ON 子句还是放置于 WHERE 子句中时,请牢记以下规则:

  • 在指定外连接时,将连接条件放置到 WHERE 子句中可能会将外连接转换为内连接。

    有关 WHERE 子句和外连接的详细信息,请参见外连接和连接条件

  • ON 子句中的条件只能引用由关联的 JOIN 连接的表表达式中的表。而 WHERE 子句中的条件可以引用任何表,即使这些表不是连接的一部分。

  • 您不能将 ON 子句与关键字 CROSS JOIN 一起使用,但您始终可以使用 WHERE 子句。

  • 在连接条件位于 ON 子句中时,键连接不是缺省值。但是,如果连接条件置于 WHERE 子句中,则键连接可以是缺省值。

    有关在什么条件下键连接是缺省值的详细信息,请参见键连接

在本文档的一些示例中,将连接条件放置于 ON 子句中。在使用外连接的示例中,这是必需的。在其它一些例子中,这样做是为了更明显地表明它们是连接条件,而不是一般的搜索条件。