⚡️ Как работают конструкции 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? Пишите в комментариях!

@@dima_sqlit


Ссылки