⚡️ Как работают конструкции ANY и ALL в SQL — объяснение на простых примерах:
Будем работать вот с такой таблицей:
Таблица: employees
id name role_name salary
1 Ваня Программист 30_000
2 Таня Аналитик 40_000
3 Петя Программист 20_000
4 Саша Менеджер 50_000
Предположим, что нам нужно найти сотрудников у которых зарплата:
1) больше чем хотя бы у одного из программистов
2) больше чем у всех программистов
1️⃣Конструкция ANY:
Находим всех, у кого зарплата больше, чем хотя бы у одного программиста:
SELECT *
FROM employees
WHERE salary > ANY (
SELECT salary FROM employees WHERE role_name = 'Программист'
);
• В подзапросе будут зарплаты программистов: 30_000, 20_000.
• ANY — это условие вида: salary > 20_000 ИЛИ salary > 30_000.
• По сути, это то же самое, что salary > MIN(зарплат_программистов).
2️⃣Конструкция ALL:
Теперь ищем тех, у кого зарплата больше, чем у всех программистов:
SELECT *
FROM employees
WHERE salary > ALL (
SELECT salary FROM employees WHERE role_name = 'Программист'
);
• Здесь ALL работает как “И”: salary > 20_000 И salary > 30_000 одновременно.
• Это равнозначно salary > MAX(зарплат_программистов).
Итог:
🍸 Если вы нашли пост для себя полезным, то накидывайте реакций, чтобы я понимал, что вам эта тема интересна!
❤️Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)
❓ А вы в каких задачах использовали ANY и ALL или предпочитаете min/max? Пишите в комментариях!