GBase 8s 外连接扩展用法

GBase 8s 扩展 OUTER 子句

OUTER 关键字扩展外连接,语法为隐式的左外连接。如果您对于外连接使用此 GBase 8s 扩展语法,则对同一 SELECT 语句使用所有下列限制:

  • 您必须对单个查询块中的所有外连接使用 GBase 8s 扩展语法。
  • 您必须在 WHERE 子句中包括连接条件。
  • 您不可以 LEFT JOIN 或 LEFT OUTER JOIN 关键字起始另一外连接。
  • 您不可定义横向的表引用或包括 LATERAL 关键字。
  • 在 GBase 8s 扩展外连接之内,“表引用”语法段不可包括在同一 SELECT 语句中声明的横向的表引用。
(+) 操作符

使用(+)形式表现外连接,即用 (+) 来表示两表的连接关系。可以在 WHERE 条件中使用 “(+)” 形式的外连接语法来实现多表连接。例如,tb_A.c1=tb_B.c2 (+) 表示 tb_A LEFT OUTER JOIN tb_B ON tb_A.c1 = tb_B.c2。

使用 ”(+)” 操作符表示外连接具有以下限制:

  • = 两边不能同时设置(+)。
  • 多个连接条件之间必须使用 AND 关键字连接,不支持其它关键字。
  • (+) 操作符只适用于列,不能用于表达式,并且不能与 OR 或 IN 运算符一起使用。
  • 不能使用 (+) 操作符连接同一个表,可以通过采用不同别名方式进行自连接。
  • 如果在一个单独的查询块中使用了 (+) 操作符,则所有的外连接都必须使用 (+) 操作符的形式。
  • 单次查询中任意两张表不能既左外连接后右连外接。
  • 如果使用了 (+) 操作符的外连接形式,则在一个查询块中的其它外连接中不能使用 LEFT JOIN 或者 LEFT OUTER JOIN 形式。

举例

示例语句标准表 lefttb 嵌套外连接,先与标准表 righttb 左外连接,再嵌套左外连接标准表 rightsubtb ,返回匹配条件为真的行、左表中不符合匹配条件的行:

---ANSI嵌套连接语法
SELECT t1.*,t2.*,t3.* FROM lefttb t1 
LEFT OUTER JOIN righttb t2 
ON t1.rid = t2.rid
LEFT OUTER JOIN rightsubtb t3
ON t2.rid = t3.rid;
---隐式左外连接 OUTER 扩展语法
SELECT t1.*,t2.*,t3.*
FROM lefttb t1 ,OUTER(righttb t2,OUTER rightsubtb t3)
WHERE t1.rid = t2.rid AND t2.rid = t3.rid;
---(+) 操作符表示嵌套左外连接 
SELECT t1.*,t2.*,t3.*
FROM lefttb t1 ,righttb t2,rightsubtb t3
WHERE t1.rid=t2.rid(+) AND t2.rid=t3.rid(+);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值