me_edu
SQL: запросы с нуляШаг 24 из 31 · 0% пройдено
Подзапросы · Подзапросы

Подзапросы в SELECT и проверка существования

Шаг 24 из 316 минТеория
Цель

Понять основной механизм темы «Подзапросы в SELECT и проверка существования» без заучивания отдельных терминов.

Как работать

Прочитайте блок один раз целиком, затем вернитесь к схеме или примеру и перескажите идею своими словами.

Критерий

Сформулированное правило, пример применения и одно ограничение метода.

Опорная идея

Подзапрос может стоять и в списке колонок — чтобы добавить вычисляемое значение к каждой строке:

SELECT u.name, (SELECT COUNT(*) FROM orders o WHERE o.user_id = u.id) AS orders_count FROM users u;

Для каждого пользователя подсчитывается число его заказов.

Оператор EXISTS проверяет, есть ли вообще строки, удовлетворяющие подзапросу — удобно для вопросов «есть ли хоть один»:

SELECT name FROM users u WHERE EXISTS ( SELECT 1 FROM orders o WHERE o.user_id = u.id ); -- пользователи, у которых есть хотя бы один заказ

Когда подзапросов и JOIN-ов становится много, запрос можно разбить на читаемые шаги через конструкцию WITH (общее табличное выражение, CTE) — это уже следующий уровень, но знать о нём полезно: он делает сложные запросы понятными.

Назад

Обсуждение

Войдите, чтобы участвовать в обсуждении.

Пока нет сообщений.