GBase8s数据库SELECT 语句20

符合 ANSI 的连接

对于连接的符合 ANSI 的语法支持这些连接规范:

要使用 CROSS 连接、LEFT OUTER、RIGHT OUTER 或 FULL OUTER 连接,或

INNER(或简单的)连接,请参阅 ANSI INNER 连接。

要使用前连接过滤器,请参阅 使用 ON 子句。

要在 WEHERE 子句中使用一个或多个后连接过滤器,请参阅 指定后连接过滤器。

要使得外连接的主或从部分成为另一连接的结果集,请参阅 使用连接作为外连接的主部分

或从部分。

重要: 当您在 GBase 8s 中创建新的查询时,请对连接使用符合 ANSI 的语法.

在此,ONLY 关键字的语义与在 GBase 8s 扩展“表引用”段的语义相同,如在 ONLY 关键字 中描

述的那样。

当您为表引用声明别名(也称为关联名称)时,AS 关键字是可选的,如在 AS 关键字 中描述的

那样,除非该别名与 SQL 关键字冲突。

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 连接的表

在同一查询块中,对于所有外连接您必须使用相同的连接语法形式(或 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);

ANSI CROSS 连接

CROSS 关键字指定笛卡尔积,返回包括从每一被连接的表的一行的所有可能的成对组合。

ANSI INNER 连接

要使用符合 ANSI 的语法创建内(或简单的)连接,请以 JOIN 或 INNER JOIN 关键字指定该连

接。如果您仅指定 JOIN 关键字,则数据库服务器缺省地创建隐式的内连接。内连接返回有一个或

多个在其他一个表(或多个表)中的相匹配的行的表中的所有行。废弃不相匹配的行。

ANSI LEFT OUTER 连接

LEFT 关键字指定将第一个表引用处理作为该连接中的主表的连接。在左外连接中,外连接的从部

分出现在起始该外连接规范的关键字的右边。结果集包括 INNER 连接返回的所有行,加上可能已

从从表废弃的所有行。

ANSI RIGHT OUTER 连接

RIGHT 关键字指定连接,该连接处理第二个表引用作为连接中的从表。在右外连接中,外连接的

从部分出现在起始该外连接规范的关键字的左边。结果集包括 INNER 连接返回的所有的行,加上

可能已从从表废弃了的所有行。

对横向派生的表的相关联引用不是 ANSI RIGHT OUTER 连接中有效的表引用。例如,下列查询失

败,因为在派生的表的 ON 子句中的相关联的引用 t1.c1 是不受支持的横向相关联:

SELECT * FROM t1 RIGHT JOIN LATERAL

(SELECT * FROM t2 JOIN t3

ON t2.c1 = t1.c1) AS X ON 1=1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值