Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
旧式Oracle外部联接语法-为什么在左侧外部联接中将(+;)定位在等号的右侧?_Oracle_Syntax - Fatal编程技术网

旧式Oracle外部联接语法-为什么在左侧外部联接中将(+;)定位在等号的右侧?

旧式Oracle外部联接语法-为什么在左侧外部联接中将(+;)定位在等号的右侧?,oracle,syntax,Oracle,Syntax,我总是告诉新手,要记住旧式的Oracle外部连接语法,一个简单的方法就是 (+)符号位于您认为应该位于的另一侧 左连接: select * from foo, bar where foo.id = bar.id(+) 右连接: select * from foo, bar where foo.id(+) = bar.id 我肯定是在大学里学的,但两边都有(+)符号的目的是什么?它是否只是表示“即使是另一侧与此侧不匹配的行”?但这似乎太复杂了。选择“(+)”并将其放在不匹配的一侧的目的是什么?

我总是告诉新手,要记住旧式的Oracle外部连接语法,一个简单的方法就是

(+)符号位于您认为应该位于的另一侧

左连接:

select * from foo, bar
where foo.id = bar.id(+)
右连接:

select * from foo, bar
where foo.id(+) = bar.id
我肯定是在大学里学的,但两边都有(+)符号的目的是什么?它是否只是表示“即使是另一侧与此侧不匹配的行”?但这似乎太复杂了。选择“(+)”并将其放在不匹配的一侧的目的是什么?

(+)
标识正在外部连接到的表。按照我学习的方式,
(+)
指示表中缺少的行,必须添加新的
NULL


如果查看在
左外部联接成为ANSI标准的一部分之前支持的各种数据库,则专有运算符通常应用于“缺少”行的表。与Oracle的做法相同。

您对选择“(+)”的原因有何评论?很好的解释。但是,我认为在“(+)标识外部连接到的表”中有太多的“to”,所以这个句子很混乱。在
foo.id=bar.id(+)
bar是外部联接的表,foo是(bar)外部联接的表。