这是旧的 Oracle Join 语法。
SELECT *
FROM tableA, tableB
WHERE Conditions [+] -- this should be tableA (+) = tableB
+ 符号的位置表示JOIN 语法。
如果您查询的是:
SELECT *
FROM tableA, tableB
WHERE tableA.id (+) = tableB.Id
然后它会显示一个RIGHT OUTER JOIN,所以相当于:
SELECT *
FROM tableA
RIGHT OUTER JOIN tableB
ON tableB.id = tableA.Id
如果+ 符号在另一边,那么它将是LEFT OUTER JOIN
SELECT *
FROM tableA, tableB
WHERE tableA.id = tableB.Id (+)
等价于
SELECT *
FROM tableA
LEFT OUTER JOIN tableB
ON tableA.id = tableB.Id
不过,我建议使用标准连接语法。
如果您没有指定+ 符号,那么它将被解释为INNER JOIN
SELECT *
FROM tableA, tableB
WHERE tableA = tableB
相当于:
SELECT *
FROM tableA
INNER JOIN tableB
ON tableA.id = tableB.id
FULL OUTER JOIN 将使用两个SELECT 语句和一个UNION 编写:
SELECT *
FROM tableA, tableB
WHERE tableA.id = tableB.Id (+)
UNION
SELECT *
FROM tableA, tableB
WHERE tableA.id (+) = tableB.Id
相当于是:
SELECT *
FROM tableA
FULL OUTER JOIN tableB
ON tableA.id = tableB.id
这是一个解释了很多这些的教程:
Old Outer Join Syntax