Значение (+) в SQL-запросах

Я столкнулся с некоторыми SQL-запросами в Oracle, которые содержат "(+)", и я понятия не имею, что это значит. Может ли кто-нибудь объяснить свою цель или предоставить некоторые примеры ее использования? Благодаря

Ответ 1

Это синоним Oracle для OUTER JOIN.

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

дает тот же результат, что и

SELECT *
FROM a
     LEFT OUTER JOIN b
     ON b.id = a.id

Ответ 2

"+" - короткое сокращение для OUTER JOIN, в зависимости от того, на какой стороне вы его наложили, это означает, что LEFT или RIGHT OUTER JOIN

Отметьте вторую запись в этот пост форума для некоторых примеров

Ответ 3

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

ПРИМЕЧАНИЕ: это может быть обратным/слегка неправильным, поскольку я никогда не использовал синтаксис pre-ANSI SQL.

Ответ 4

Вы используете это, чтобы убедиться, что таблица, в которую вы присоединяетесь, не уменьшает количество возвращенных записей. Таким образом, это удобно, когда вы присоединяетесь к таблице, у которой может не быть записи для каждого ключа, к которому вы присоединяетесь.

Например, если вы присоединились к таблице Customer and Purchase:

В список всех клиентов и все их покупки вы хотите сделать внешнее соединение (+) в таблице Purchase, чтобы клиенты, которые ничего не купили, все еще отображаются в вашем отчете.