4

我现在正在与 PLSQL 开发人员打交道,这是我第一次。我发现这种查询

select * from tableA, tableB
where tableA.field1 = tableB.field1(+)

我想知道(+)查询中的功能。各位大神能解释一下吗?

4

6 回答 6

5
where tableA.field1 = tableB.field1(+)

这是旧的外连接语法,被 Oracle 采用,并且在 ANSI 实际标准化 SQL 语言时变得多余。Oracle 自己现在建议您outer join优先使用这种旧语法(来自下面的链接):

Oracle 建议您使用FROM子句OUTER JOIN语法而不是 Oracle 连接运算符。

有关更多详细信息,请参阅Oracle 文档中的此条目。

于 2012-04-13T07:53:55.683 回答
4

这是 Oracle SQL OUTER JOIN 语法

可以解释为

select * from tableA
OUTER JOIN tableB ON tableA.field1 = tableB.field1
于 2012-04-13T07:53:32.790 回答
2

来自 oracle 文档:

(+) 表示前一列是连接中的外连接列。

于 2012-04-13T07:54:30.303 回答
1

它可以用作

select * from tableA right outer join tableB where tableA.field1 = tableB.field1

(+) 运算符表示它将返回右表中的所有行(匹配和不匹配)来自右表的两行。并且从左表返回匹配的行。
如果行与右表不匹配,则返回 null。

于 2013-01-23T07:05:03.960 回答
1

+用于从表中检索经过数学处理和未处理的记录。

例子:

桌子A和桌子B

如果你使用喜欢A.column1=B.column1(+)

它从表中检索未处理的记录,A并将其称为左外连接。

于 2014-09-29T15:35:03.820 回答
0

这是 LEFT OUTER JOIN 的 Oracle 特定符号

例子:

select ...
from a,b
where a.id=b.id(+)

查询将被重写

SELECT ...
     FROM a
LEFT JOIN b ON b.id = a.id
于 2014-12-18T19:51:39.623 回答