Эти операторы предназначены для сравнения результатов одного
SELECT с результатами второго SELECT из подзапроса, что может быть удобно в некоторых случаях: если подзапрос возвращает небольшое количество строк или когда нужно сравнить значение хотя бы с одним значением из подзапроса.Представим, что нам нужно найти все продукты, цена которых выше, чем цена любого продукта в категории
Discount:SELECT product, price
FROM products
WHERE price > ALL (SELECT price FROM products WHERE category = 'Discount');
Теперь найдем всех клиентов, заказавших хотя бы один продукт с ценой выше 1000 рублей:
SELECT DISTINCT customer_id
FROM orders
WHERE product_id = ANY (SELECT product_id FROM products WHERE price > 1000);
И найдем всех клиентов, которые заказывали продукты из определенной категории:
SELECT DISTINCT customer_id
FROM orders
WHERE product_id = ANY (SELECT product_id FROM products WHERE category = 'Electronics');
🔥 Но помните, что использование
ALL и ANY возможно только с подзапросами и может быть неэффективным, если подзапрос возвращает большое количество строк.➡️ SQL Ready | #практика