Что означает знак (+) в предложении Oracle SQL WHERE?
Возможный дубликат:
Oracle: Что делает (+)
в предложении WHERE?
Рассмотрим упрощенный SQL-запрос ниже в среде базы данных Oracle (хотя я не уверен, что это зависит от Oracle):
SELECT
t0.foo, t1.bar
FROM
FIRST_TABLE t0, SECOND_TABLE t1
WHERE
t0.ID (+) = t1.ID;
Что такое обозначение (+)
для предложения WHERE
? Прошу прощения, если это неосведомленный вопрос о новичках, но его было чрезвычайно сложно найти в Google или StackOverflow... потому что даже при использовании кавычек поисковые системы видят знак "+" и, похоже, хотят рассматривать его как что-то вроде логической директивы.
Ответы
Ответ 1
Это ориентированная на Oracle нотация для внешнего соединения. Это означает, что он будет включать все строки из t1 и использовать NULLS в столбцах t0, если в t0 нет соответствующей строки.
В стандартном SQL можно было бы написать:
SELECT t0.foo, t1.bar
FROM FIRST_TABLE t0
RIGHT OUTER JOIN SECOND_TABLE t1;
Oracle рекомендует больше не использовать эти объединения, если ваша версия поддерживает соединения ANSI (LEFT/RIGHT JOIN):
Oracle рекомендует использовать синтаксис FROM вместо OUTER JOIN вместо оператора объединения Oracle. Запросы внешнего соединения, использующие оператор объединения Oracle (+), подчиняются следующим правилам и ограничениям [...]