ANSI 连接的表

对连接表使用符合 ISO/ANSI 的语法,您可指定 INNER JOIN、CROSS JOIN、NATURAL JOIN、LEFT JOIN(或 LEFT OUTER JOIN)、RIGHT JOIN(或 RIGHT OUTER JOIN)和 FULL JOIN(FULL OUTER JOIN)关键字。在符合 ANSI 的外连接中,OUTER 关键字是可选的。

这是对于指定的内连接和外连接的符合 ANSI 的语法。
ANSI 连接的表
Join 选项
ON 子句
元素 描述 限制 语法
subquery 嵌入的查询 不可包含 FIRST 或 ORDER BY 子句 SELECT 语句

在同一查询块中,对于所有外连接您必须使用相同的连接语法形式(或 GBase 8s 扩展,或符合 ANSI)。当您使用符合 ANSI 的连接语法时,您还必须在 ON 子句中指定连接条件。

如果“ANSI 连接的表”段紧跟在另一连接规范之后,则必须将它括在圆括号之间。 例如,下列两个查询的第一个返回错误;第二个查询是有效的:
SELECT * FROM (T1 LEFT JOIN T2) CROSS JOIN T3 ON (T1.c1 = T2.c5)
          WHERE (T1.c1 < 100);    -- Ambiguous order of operations;
          
          SELECT * FROM (T1 LEFT JOIN T2 ON (T1.c1 = T2.c5)) CROSS JOIN T3 
          WHERE (T1.c1 < 100);    -- Unambiguous order of operations;
下列有效的查询指定外部 SELECT 语句的 FROM 子句之内的表表达式的嵌套的 LEFT OUTER 连接:
SELECT * FROM
          ( (SELECT C1,C2 FROM T3) AS VT3(V31,V32)
          LEFT OUTER JOIN
          ( (SELECT C1,C2 FROM T1) AS VT1(VC1,VC2)
          LEFT OUTER JOIN
          (SELECT C1,C2 FROM T2) AS VT2(VC3,VC4)
          ON VT1.VC1 = VT2.VC3)
          ON VT3.V31 = VT2.VC3);
1 请参阅 使用 ON 子句
2 请参阅 ANSI 表引用
3 请参阅 在 WHERE 子句中指定连接
4 请参阅 函数表达式
5 请参阅 条件
6 请参阅 集合子查询
7 缺省的规范