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

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

21 голосов
/ 05 февраля 2009

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

Ответы [ 4 ]

40 голосов
/ 05 февраля 2009

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

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

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

SELECT *
FROM a
     LEFT OUTER JOIN b
     ON b.id = a.id
4 голосов
/ 05 февраля 2009

+ - это сокращение для ВНЕШНЕГО СОЕДИНЕНИЯ, в зависимости от того, на какую сторону вы его положили, оно указывает на ВЛЕВО или ВПРАВО НАРУЖНОЕ СОЕДИНЕНИЕ

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

2 голосов
/ 05 февраля 2009

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

Например, если вы присоединились к таблице «Клиент» и «Покупка»:

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

2 голосов
/ 05 февраля 2009

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...