Подзапросы
Что такое подзапросы: определение, основные принципы, примеры и практические советы. Изучайте SQL для тестировщиков с подробными объяснениями для начинающих специалистов.
Подзапросы.
Подзапрос — это запрос, использующийся в другом SQL запросе. Подзапрос всегда заключён в круглые скобки и обычно выполняется перед основным запросом.
SELECT * FROM Reservations
WHERE Reservations.room_id = (
SELECT id FROM Rooms ORDER BY price DESC LIMIT 1
);
Практические примеры:
-- Подзапрос в WHERE - пользователи с заказами выше среднего
SELECT username FROM users
WHERE id IN (
SELECT user_id FROM orders
WHERE total_amount > (SELECT AVG(total_amount) FROM orders)
);
-- Подзапрос в SELECT - количество заказов для каждого пользователя
SELECT username,
(SELECT COUNT(*) FROM orders WHERE user_id = users.id) as order_count
FROM users;
-- Подзапрос в FROM - средняя цена по категориям
SELECT category_stats.category, category_stats.avg_price
FROM (
SELECT category, AVG(price) as avg_price
FROM products
GROUP BY category
) as category_stats
WHERE category_stats.avg_price > 100;
-- EXISTS - пользователи с заказами
SELECT username FROM users u
WHERE EXISTS (
SELECT 1 FROM orders o WHERE o.user_id = u.id
);
-- NOT EXISTS - пользователи без заказов
SELECT username FROM users u
WHERE NOT EXISTS (
SELECT 1 FROM orders o WHERE o.user_id = u.id
);