Подзапросы и функция EXISTS

Оценить
(0 голоса)

Функция exists принимает внутренний запрос в качестве аргумента и возвращает истину, если внутренний запрос возвращает одну или более строк, и возвращает ложь, если запрос вернет ноль строк. Эта функция будет рассмотрена с использованием примеров.

Подзапросы и функция EXISTS

 

Внутренний запрос в функции exists почти всегда зависит от переменной из внешнего запроса. По этой причине функция exists обычно задает коррелированный подзапрос.

Давайте посмотрим, как Database Engine может обрабатывать запрос в примере 6.66. Во-первых, внешний запрос просматривает первую строку таблицы employee (Smith). Затем выполняется функция exists для определения того, существуют ли строки в таблице workson, для которых номер служащего соответствует текущей строке из внешнего запроса и у которых project_no равняется pi. Поскольку мистер Smith не работает над проектом pi, результатом внутреннего запроса будет пустое множество, и функция exists вернет ложь. Поэтому служащий с фамилией Smith не принадлежит результирующему набору. Используя этот процесс, проверяются все строки таблицы employee, а затем отображается результат.

В примере 6.67 показано использование функции not exists.

 

Подзапросы и функция EXISTS

 

Подзапросы и функция EXISTS

 

Для списка выбора оператора select, который является внешним запросом, включающим функцию exists, не рекомендуется использовать форму select, как было в предыдущем примере. Альтернативной формой является форма select список_столбцов, где список_столбцов - один или более столбцов таблицы. Обе формы эквивалентны, потому что функция exists проверяет только лишь существование (в данном случае отсутствие) строк в результирующем наборе. По этой причине использование select * в данном случае является более защищенным.


Должны вы использовать соединения или подзапросы?
Преимущества подзапросов
Преимущества соединений
Табличные выражения
Наследуемые таблицы

Добавить комментарий


Защитный код
Обновить

© 2018 www.serversql.ru. Все права защищены.