Коррелированные подзапросы используются для по- строчной обработки.
Каждый подзапрос выполняется однократно для каждой строки внешнего запроса.
Коррелированный подзапрос выполняется сервером Oracle, когда подзапрос ссылается на столбец из таблицы, упоминаемой в родительской инструкции. Коррелированный подзапрос выполняется однократно для каждой строки, обрабатываемой родительской инструкцией. Родительской инструкцией может быть инструкция SELECT
, UPDATE
или DELETE
.
Вложенные подзапросы и коррелированные подзапросы
При обычном вложенном подзапросе сначала запускается и выполняется однократно внутренний запрос SELECT
, возвращая значения, которые используются главным запросом. Однако коррелированный подзапрос выполняется однократно для каждой строки-кандидата, анализируемой внешним запросом. Иными словами, внутренний запрос управляется внешним запросом.
Выполнение вложенного подзапроса
-
Внутренний запрос выполняется первым и осуществляет поиск значения.
-
Внешний запрос выполняется однократно, используя значение из внутреннего запроса.
Выполнение коррелированного подзапроса
-
Получает строку-кандидата (выбираемую внешним запросом).
-
Выполняет внутренний запрос, используя значение строки-кандидата.
-
Использует значения, получаемые из внутреннего запроса, для квалификации или дисквалификации строки-кандидата.
-
Повторяется до тех пор, пока имеются строки-кандидаты.
Подзапрос ссылается на столбец из таблицы в родительском запросе.
Коррелированный подзапрос является одним из способов чтения каждой строки в таблице и сравнения значений в каждой строке со связанными данными. Он используется всякий раз, когда подзапрос должен вернуть другой результат или набор результатов для каждой строки- кандидата, анализируемой главным запросом. Иными словами, коррелированный подзапрос применяется, чтобы ответить на многокомпонентный вопрос, ответ на который зависит от значения в каждой строке, обрабатываемой родительской инструкцией.
Коррелированный подзапрос выполняется сервером Oracle, когда подзапрос ссылается на столбец из таблицы в родительском запросе.
Примечание. В коррелированном подзапросе можно использовать операторы ANY
и ALL
.
Далее: Синтаксис условий и функций регулярных выражений