我现在正在与 PLSQL 开发人员打交道,这是我第一次。我发现这种查询
select * from tableA, tableB
where tableA.field1 = tableB.field1(+)
我想知道(+)
查询中的功能。各位大神能解释一下吗?
我现在正在与 PLSQL 开发人员打交道,这是我第一次。我发现这种查询
select * from tableA, tableB
where tableA.field1 = tableB.field1(+)
我想知道(+)
查询中的功能。各位大神能解释一下吗?
where tableA.field1 = tableB.field1(+)
这是旧的外连接语法,被 Oracle 采用,并且在 ANSI 实际标准化 SQL 语言时变得多余。Oracle 自己现在建议您outer join
优先使用这种旧语法(来自下面的链接):
Oracle 建议您使用
FROM
子句OUTER JOIN
语法而不是 Oracle 连接运算符。
有关更多详细信息,请参阅Oracle 文档中的此条目。
这是 Oracle SQL OUTER JOIN 语法
可以解释为
select * from tableA
OUTER JOIN tableB ON tableA.field1 = tableB.field1
来自 oracle 文档:
(+) 表示前一列是连接中的外连接列。
它可以用作
select * from tableA right outer join tableB where tableA.field1 = tableB.field1
(+) 运算符表示它将返回右表中的所有行(匹配和不匹配)来自右表的两行。并且从左表返回匹配的行。
如果行与右表不匹配,则返回 null。
+
用于从表中检索经过数学处理和未处理的记录。
例子:
桌子A
和桌子B
如果你使用喜欢A.column1=B.column1(+)
它从表中检索未处理的记录,A
并将其称为左外连接。
这是 LEFT OUTER JOIN 的 Oracle 特定符号
例子:
select ...
from a,b
where a.id=b.id(+)
查询将被重写
SELECT ...
FROM a
LEFT JOIN b ON b.id = a.id