Oracle SQL:WHERE 子句中 (+)= 的含义

Oracle SQL: Meaning of (+)= in WHERE clause

我对在 Oracle 数据库的 where 子句中使用 (+)= 有疑问;

  1. a. id= b.id(+)

这是否意味着在 a.id=b.id 处的 b 上进行左连接,对吗?

  1. a.Job_Type(+) = 'Manager'

我不明白为什么他这里用(+)=,而不是a.Job_Type = 'Manager',它们是一样的吗?

它的工作方式类似于 LEFT JOINRIGHT JOIN,具体取决于该列所属的 table 您可以阅读不同的内容JOINS 的类型 here

在您的情况下,(+) 将 return 来自 table 的所有记录,这些记录具有别名 a,并且只有那些来自 table 的记录它的别名 b 与 table 别名 a.

相交

(+) 标识正在外部连接的 table。按照我被教导的方式,(+) 表示 table 将缺少行,必须为其添加新的 NULL 行。

如果您查看在 LEFT OUTER JOIN 成为 ANSI 标准的一部分之前各种数据库支持的备用左外部联接语法,专有运算符通常应用于 table 即 "missing"行。 DB2 还以与 Oracle 相同的方式支持外连接的 (+) 运算符。

回答Old Style Oracle Outer Join Syntax - Why locate the (+) on the right side of the equals sign in a Left Outer join?