1

只是我在一个存储过程中遇到了一个 SQL 查询,如下所示:

SELECT 
    * 
FROM 
    account a, 
    performance p,
    customer c, 
    override o
WHERE 
    a.account_id = p.account_id (+)
    AND a.account_id = c.account_id (+)
    AND o.override_type(+) = 'O'

你能解释一下这个(+)符号在这里的作用是什么吗?以及使用左侧和右侧的区别。

提前致谢。

4

2 回答 2

5

这是OUTER JOINOracle 中的旧语法(我不知道是否有其他 RDBMS 使用相同的旧语法)。

更好的是:使用或代替符号使用显式的 ANSI-92OUTER JOIN语法。LEFT OUTER JOINRIGHT OUTER JOIN+

于 2013-03-05T07:03:26.760 回答
1

(+)是 oracle(8 和更早版本)中的旧外连接语法。它非常严格,并且处理了许多错误的情况。不要再使用它了。Oracleleft outer join从版本 9 开始支持 ansi 连接(例如)。

于 2013-03-05T07:36:14.450 回答