Условия поиска с вложенным запросом

Вложенный запрос может являться частью условия поиска в предложении WHERE или HAVING. Возможны следующие условия поиска с вложенным запросом:

1. Сравнение с результатом вложенного запроса. Сравнивает значение выражения с одним значением, возвращенным вложенным запросом:

2. Проверка на принадлежность результатам вложенного запроса. Проверяет значение выражения на равенство с одним из значений множества, возвращенного вложенным запросом:

Пример запроса: вывести список квартир, в которых не установлены телефоны:

SELECT * FROM FLAT

WHERE ADR NOT IN (SELECT ADR FROM TPHONE)

3. Проверка на существование. Проверяет наличие строк в таблице результатов вложенного запроса:

Пример запроса: вывести список жителей, имеющих источник дохода с размером большим 1000 руб.:

SELECT * FROM PERSON

WHERE EXISTS (SELECT * FROM PROFIT, HAVE_D

WHERE PERSON.N0M = HAVE_D.N0M AND PROFIT.ID = HAVE_D.ID AND PROFIT. M0NEY>1000)

Обратите внимание на то, что условие поиска EXISTS не использует результаты вложенного запроса. Проверяется только наличие результатов. По этой причине в SQL смягчается правило о единственности возвращаемого столбца во вложенном запросе и во вложенном запросе при проверке EXISTS допускается использование формы SELECT *.

4. Многократное сравнение. Сравнивает значение выражения с каждым из значений множества, возвращаемого вложенным запросом:

При проверке ANY проверяемое значение поочередно сравнивается с каждым значением, содержащимся в столбце, который сформирован вложенным запросом. Если любое из этих сравнений дает результат TRUE, то проверка ANY возвращает значение TRUE.

При проверке ALL проверяемое значение поочередно сравнивается с каждым значением, содержащимся в столбце данных, выбранных вложенным запросом. Если все сравнения дают результат TRUE, то проверка ALL возвращает значение TRUE.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >