SQL查询中(+)的含义

时间:2009-02-05 19:36:10

标签: sql oracle

我在Oracle中遇到了一些包含'(+)'的SQL查询,我不知道这意味着什么。有人可以解释其目的或提供一些使用它的例子吗? 感谢

4 个答案:

答案 0 :(得分:40)

这是Oracle OUTER JOIN的同义词。

SELECT *
FROM a, b
WHERE b.id(+) = a.id

给出与

相同的结果
SELECT *
FROM a
     LEFT OUTER JOIN b
     ON b.id = a.id

答案 1 :(得分:4)

+是OUTER JOIN的捷径,取决于你把它放在哪一侧,它表示左或右外连接

检查this forum post中的第二个条目以获取一些示例

答案 2 :(得分:2)

IIRC,+在旧版本的Oracle中用于指示ANSI SQL之前的连接语法中的外连接。换句话说:

select foo,bar
from a, b
where a.id = b.id+

相当于

select foo,bar
from a left outer join b
on a.id = b.id

注意:这可能是向后/稍微不正确,因为我从未使用过ANSI SQL之前的语法。

答案 3 :(得分:2)

您可以使用它来确保您加入的表不会减少返回的记录数量。因此,当您加入可能没有记录您所加入的每个密钥的表时,它会很方便。

例如,如果您要加入Customer和Purchase表:

要列出所有客户及其所有购买内容,您希望在购买表上执行外部加入(+),以便尚未购买任何内容的客户仍会显示在您的报告中。< / p>