Я столкнулся с некоторыми SQL-запросами в Oracle, которые содержат "(+)", и я понятия не имею, что это значит. Может ли кто-нибудь объяснить свою цель или предоставить некоторые примеры ее использования? Благодаря
Значение (+) в SQL-запросах
Ответ 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, чтобы клиенты, которые ничего не купили, все еще отображаются в вашем отчете.