🟢 Введение
Оператор ALL используется в SQL для сравнения одного значения с множеством значений.
Он проверяет, соответствует ли условие всем элементам подзапроса или списка.
Например:
Проверяет, больше ли зарплата заданного сотрудника, чем у всех в отделе 50.
🔤 Написание
Синтаксис:
Возможные операторы сравнения:
=!=/<><><=>=
🔄 Где часто используется
Сравнение с агрегированным подмножеством
Фильтрация исключений
Проверка наибольшего или наименьшего значения
В подзапросах и
WHERE,HAVINGусловияхВместе с
ANY,SOMEиEXISTSдля более гибкой логики
🧪 10 Примеров использования ALL с пояснениями
1️⃣ Больше всех ( > ALL )
Сотрудники с зарплатой выше, чем у всех в отделе 50.
2️⃣ Меньше всех ( < ALL )
Сотрудники, у которых зарплата меньше, чем у всех продавцов.
3️⃣ Равно всем ( = ALL )
Отделы с таким же числом сотрудников, как в любом другом (всех). Только если все значения равны.
4️⃣ ALL с выражением
Сравнение выражения со всем набором акционных цен.
5️⃣ ALL в HAVING
Должности с самой высокой средней зарплатой среди всех отделов.
6️⃣ ALL с NOT (NOT > ALL → есть меньше или равно)
Сотрудники, у которых зарплата не больше всех в отделе 90.
7️⃣ ALL с датами
Сотрудники, нанятые раньше всех в отделе 20.
8️⃣ ALL с подзапросом, возвращающим 1 значение
Сотрудники с максимальной зарплатой. Аналог salary = (SELECT MAX(...)).
9️⃣ ALL с NULL (не возвращает ничего)
⚠️ Вернёт 0 строк, потому что NULL делает всё условие неопределённым.
🔟 ALL и производительность
✅ Подходит, когда вы точно знаете, что сравнение со всеми — логически необходимо.
⚠️ Не используйте ALL без нужды, если можно заменить на MAX() или MIN() — будет быстрее.
🧩 Заключение
Оператор ALL — это инструмент жёсткой проверки: условие должно выполняться для всех значений в подзапросе.
Он отлично подходит, когда нужно найти самых лучших, самых первых, самых дешёвых или самых дорогих.
💡 Но будьте внимательны:
Если подзапрос возвращает
NULL,ALLдастUNKNOWN→ никаких результатовЗамените
ALLнаMAXилиMINпри возможности для улучшения производительности
🔜 Следующая статья:
Оператор ANY в Oracle SQL — как сравнивать значение хотя бы с одним элементом из набора