除了使用外连接的情况之外,您可以在 WHERE 子句中指定连接条件来代替 ON 子句。但是,您应该知道,如果查询包含外连接,则 WHERE 子句和 ON 子句两者之间可能存在语义差别。
ON 子句是 FROM 子句的一部分,因此在 WHERE 子句之前进行处理。除了外连接,结果通常不会不同。在外连接中,使用 WHERE 子句可能会将连接转换为内连接。
在决定是将连接条件放置于 ON 子句还是放置于 WHERE 子句中时,请牢记以下规则:
在指定外连接时,将连接条件放置到 WHERE 子句中可能会将外连接转换为内连接。
ON 子句中的条件只能引用由关联的 JOIN 连接的表表达式中的表。而 WHERE 子句中的条件可以引用任何表,即使这些表不是连接的一部分。
您不能将 ON 子句与关键字 CROSS JOIN 一起使用,但您始终可以使用 WHERE 子句。
在连接条件位于 ON 子句中时,键连接不是缺省值。但是,如果连接条件置于 WHERE 子句中,则键连接可以是缺省值。
在本文档的一些示例中,将连接条件放置于 ON 子句中。在使用外连接的示例中,这是必需的。在其它一些例子中,这样做是为了更明显地表明它们是连接条件,而不是一般的搜索条件。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |