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