Продвинутые SQL-запросы
2026-02-26 18:35 Diff

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

Применение подзапросов

Подзапросы могут применяться практически везде, в любых операторах, в том числе в операторах DDL, DML.

Рассмотрим таблицу products:

products

Пример подзапроса, который выводит все продукты, цена которых выше средней по всем продуктам:

В результате мы получим такую таблицу:

products

Таблица на DB Fiddle

Пример подзапроса, который выводит все продукты, которые есть в таблице с чеками:

Результат будет следующим:

products

Таблица на DB Fiddle

ALL/ANY (MySQL)

Подзапрос как новая колонка

Подзапросы в SQL могут быть использованы для создания новых колонок в результирующем наборе данных.

Новая колонка, созданная с помощью подзапроса, может содержать вычисленные значения, агрегатные функции или другие данные, основанные на значениях других столбцов в таблице

Результат будет таким:

products

Таблица на DB Fiddle

Подзапросы в UPDATE

Одно из основных применений подзапросов в операции UPDATE - это обновление значений столбца на основе вычисленных или фильтрованных данных из других таблиц или столбцов.

Таблица на DB Fiddle

Подзапросы в INSERT

Подзапросы в операции INSERT используются для вставки данных, полученных из других таблиц или вычисленных с помощью подзапросов.

Таблица на DB Fiddle

Подзапросы в DELETE

Подзапросы в операции DELETE позволяют удалить данные из таблицы на основе результатов других запросов или данных из других таблиц.

Таблица на DB Fiddle

Коррелированный подзапрос

Коррелированный подзапрос - это подзапрос, который зависит от внешнего запроса и использует значения из внешнего запроса в своем выражении или фильтре.

Основное применение коррелированных подзапросов - это выполнение операций, связанных с каждой строкой основного запроса. Коррелированные подзапросы выполняются для каждой строки внешнего запроса и используют значения из этой строки для фильтрации или вычисления данных в подзапросе.

products

Таблица на DB Fiddle