在您指定自然连接时,Adaptive Server Anywhere 基于具有相同名称的列生成连接条件。因此,要使用基表的自然连接,必须至少有一对具有相同名称的列,每个表一列。如果没有公用列名称,将发出错误消息。
如果表 A 和表 B 具有一个共同的列名称,并且该列称作 x,则
SELECT * FROM A NATURAL JOIN B
等效于以下语句:
SELECT * FROM A JOIN B ON A.x = B.x
如果表 A 和表 B 具有两个共同的列名称,并且它们分别称作 a 和 b,则 A NATURAL JOIN B 等效于以下语句:
A JOIN B ON A.a = B.a AND A.b = B.b
例如,您可以使用自然连接来连接 employee 表和 department 表,因为这两个表具有一个共同的列名称:dept_id 列。
SELECT emp_fname, emp_lname, dept_name FROM employee NATURAL JOIN department ORDER BY dept_name, emp_lname, emp_fname
| emp_fname | emp_lname | dept_name |
|---|---|---|
| Janet | Bigelow | Finance |
| Kristen | Coe | Finance |
| James | Coleman | Finance |
| Jo Ann | Davidson | Finance |
| ... | ... | ... |
以下语句是等效的。该语句显式指定已在前面的示例中生成的连接条件。
SELECT emp_fname, emp_lname, dept_name FROM employee JOIN department ON (employee.dept_id = department.dept_id) ORDER BY dept_name, emp_lname, emp_fname
具有 ON 短语的自然连接
表的表达式的自然连接
视图和派生表的自然连接
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。