В этой рубрике были рассмотрены темы, посвященные извлечению данных посредством подзапросов.
подзапрос, содержащий несколько столбцов, возвращает более одного столбца;
сравнения нескольких столбцов могут быть попарными или непарными;
подзапрос, содержащий несколько столбцов, может также использоваться в предложении
FROM
инструкцииSELECT
.
Подзапросы, содержащие несколько столбцов, могут применяться для объединения нескольких условий WHERE
в одном предложении WHERE
. Сравнения столбцов в подзапросах, содержащих несколько столбцов, могут быть попарными или непарными.
Подзапрос может использоваться для определения таблицы, с которой работает внешний запрос.
Возможное местонахождение скалярных подзапросов:
часть условия и выражения в
DECODE
иCASE
;все предложения в инструкции
SELECT
, кромеGROUP BY
;предложение
SET
и предложениеWHERE
в инструкцииUPDATE
.
Коррелированные подзапросы удобны, когда подзапрос должен возвращать разные результаты для каждой строки-кандидата.
Оператор
EXISTS
является логическим оператором, проверяющим наличие значения.Коррелированные подзапросы могут использоваться с инструкциями
SELECT
,UPDATE
иDELETE
.Предложение
WITH
может применяться для использо- вания одного и того же блока запроса в инструкцииSELECT
, когда она встречается более одного раза.
Сервер Oracle выполняет коррелированный подзапрос, когда подзапрос ссылается на столбец из таблицы, упоминаемой в родительской инструкции. Коррелированный подзапрос оценивается один раз для каждой строки, обрабатываемой родительской инструкцией.
Родительской инструкцией может быть SELECT
, UPDATE
или DELETE
. Применяя предложение WITH
, можно многократно использовать один и тот же запрос, когда повторная оценка блока запроса связана со значительными затратами ресурсов, а сам блок запроса встречается более одного раза в сложном запросе.