SQL | Подзапросы



Подзапросы
- мощная залупа, которая используется внутри другого запроса, знаю, нихуя не понятно, поэтому идем к примерам. Нам надо одним запросом извлечь данные на товар, который стоит больше всех:



1. Сначала напишем сам запрос для получения

SELECT
MAX(price) FROM products



2. Теперь добавим подзапрос в наш основной запрос

SELECT id, title, price FROM products WHERE price = (SELECT MAX(price) FROM products)



Другой пример с получением информации на товары, которые были проданы хотя бы 1 раз



SELECT id, title, price FROM products WHERE id IN (SELECT product_id FROM sales)

ps:
Важное уточнение, здесь используется IN, потому что подзапрос возвращает МАССИВ элементов и уже внутри этого массива ищутся поля, указанные после фильтра WHERE



Другой пример, допустим надо обновить цену для всех товаров с категорией "залупа"



UPDATE products SET price = price + 666 WHERE category_id = (SELECT id FROM categories WHERE title="залупа")

Здесь мы IN не юзаем, поскольку мы должны ДЛЯ ВСЕХ элементов в массиве поменять значение, а не для конкретных