- •Агрегатные функции
- •Агрегатные функции и значения null
- •Удаление повторяющихся строк (distinct)
- •Предложения group by и having (запросы с группировкой)
- •Ограничения на запросы с группировкой
- •Условия поиска групп
- •Ограничения на условия поиска групп
- •Вложенные запросы на чтение
- •Условия поиска с вложенным запросом
- •Вложенный _запрос
- •Вложенный _запрос
- •Вложенный _запрос
Условия поиска с вложенным запросом
Вложенный запрос может являться частью условия поиска в предложении WHERE или HAVING. Возможны следующие условия поиска с вложенным запросом:
1. Сравнение с результатом вложенного запроса. Сравнивает значение выражения с одним значением, возвращенным вложенным запросом:
проверяемое_выражениеВложенный _запрос
=
< >
<
< =
>
> =
2.Проверка на принадлежность результатам вложенного запроса. Проверяет значение выражения на равенство с одним из значений множества, возвращенного вложенным запросом:
Пример запроса: вывести список квартир, в которых не установлены телефоны:
SELECT * FROM FLAT
WHERE ADR NOT IN (SELECT ADR FROM TPHONE)
3.П
Вложенный _запрос
роверка на существование. Проверяет
наличие строк в таблице результатов
вложенного запроса:
EXISTS
NOT
Пример запроса: вывести список жителей, имеющих источник дохода с размером большим 1000 руб.:
SELECT * FROM PERSON
WHERE EXISTS (SELECT * FROM PROFIT, HAVE_D
WHERE PERSON.NOM=HAVE_D.NOM
AND PROFIT.ID=HAVE_D.ID
AND PROFIT. MONEY>1000)
Обратите внимание на то, что условие поиска EXISTS не использует результаты вложенного запроса. Проверяется только наличие результатов. По этой причине в SQL смягчается правило о единственности возвращаемого столбца во вложенном запросе и во вложенном запросе при проверке EXISTS допускается использование формы SELECT *.
4. Многократное сравнение. Сравнивает значение выражения с каждым из значений множества, возвращаемого вложенным запросом:
проверяемое
_выражениеВложенный _запрос
=ANY
< >ALL
<
< =
>
> =
При проверке ANY проверяемое значение поочередно сравнивается с каждым значением, содержащимся в столбце, который сформирован вложенным запросом. Если любое из этих сравнений дает результат TRUE, то проверка ANY возвращает значение TRUE.
При проверке ALL проверяемое значение поочередно сравнивается с каждым значением, содержащимся в столбце данных, выбранных вложенным запросом. Если все сравнения дают результат TRUE, то проверка ALL возвращает значение TRUE.