您可以单独使用显式连接条件而不用键连接或自然连接,也可以与键连接或自然连接一起使用。通过在紧随该连接之后插入 ON 短语来指定连接条件。该连接条件始终针对它前面的连接。
在以下查询中,第一个 ON 短语用于将 sales_order 连接到 customer。第二个 ON 短语用于将表的表达式 (sales_order JOIN customer) 连接到基表 sales_order_item。
SELECT *
FROM sales_order JOIN customer
ON sales_order.cust_id = customer.id
JOIN sales_order_items
ON sales_order_items.id = sales_order.id在 ON 短语中引用的表必须是 ON 短语修饰的连接的一部分。例如,以下语句无效:
FROM (A KEY JOIN B) JOIN (C JOIN D ON A.x = C.x)
造成语句无效的原因在于,连接条件 A.x = C.x 引用表 A,而该表不是该连接条件修饰的连接的一部分(在此例子中为 C JOIN D)。
但是,截至 ANSI/ISO 标准 SQL99 和 Adaptive Server Anywhere 7.0,对于该规则有一个例外:如果您在表的表达式之间使用逗号,则连接的 ON 条件可以引用 FROM 子句中在语法上位于该条件前面的表。因此,以下语句是有效的:
FROM (A KEY JOIN B) , (C JOIN D ON A.x = C.x)
有关逗号的详细信息,请参见逗号。
生成的连接和 ON 短语
显式连接条件的类型
使用 WHERE 子句用于连接条件
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。