Subqueries SQL Server

В этом учебном пособии вы узнаете, как использовать подзапросы в SQL Server (Transact-SQL) с синтаксисом и примерами.

Описание

В SQL Server подзапрос представляет собой запрос в запросе. Вы можете создавать подзапросы в своих операторах SQL. Эти подзапросы могут находиться в предложении WHERE, в предложении FROM или в предложении SELECT.

Примечание

  • В SQL Server (Transact-SQL) подзапросом также называется INNER QUERY или INNER SELECT.
  • В SQL Server (Transact-SQL) основной запрос, который содержит подзапрос, также называется OUTER QUERY или OUTER SELECT.

Предложение WHERE

Чаще всего подзапрос будет найден в предложении WHERE. Эти подзапросы также называются вложенными подзапросами.
Например:

Часть подзапроса вышеприведенного оператора SELECT:

Этот подзапрос позволяет находить все значения product_id из таблицы inventory, количество которых больше 30. Подзапрос затем используется для фильтрации результатов основного запроса с использованием условия IN.

Этот подзапрос может быть альтернативно записан как INNER-соединение следующим образом:

Этот INNER JOIN будет работать более эффективнее, чем исходный подзапрос. Важно отметить, однако, что не все подзапросы могут быть переписаны с помощью объединений JOIN.

Предложение FROM

Подзапрос также можно найти в предложении FROM. Они называются встроенными представлениями.
Например:

В этом примере мы создали подзапрос в предложении FROM следующим образом:

Этот подзапрос был псевдонимом с именем subquery1. Это будет имя, используемое для ссылки на этот подзапрос или любое из его полей.

Предложение SELECT

Подзапрос также можно найти в предложении SELECT. Они обычно используются, когда вы хотите получить расчет с использованием агрегатной функции, такой как функция SUM, COUNT, MIN или MAX, но вы не хотите, чтобы агрегированная функция применялась к основному запросу.
Например:

В этом примере мы создали подзапрос в предложении SELECT следующим образом:

Подзапрос был с псевдонимом с именем subquery2. Это будет имя, используемое для ссылки на этот подзапрос или любое из его полей.

Трюк для размещения подзапроса в предложении select заключается в том, что подзапрос должен возвращать одно значение. Вот почему в подзапросе используется агрегирующая функция, такая как функция SUM, COUNT, MIN или MAX.