Подзапросы SQLite

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

Описание

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

Примечание

  • В SQLite подзапрос также называется INNER QUERY или INNER SELECT.
  • В SQLite основной запрос, содержащий подзапрос, также называется OUTER QUERY или OUTER SELECT.

Оператор WHERE

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

Например:

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

Этот подзапрос позволяет вам найти все значения department_id из таблицы departments, которые имеют department_name 'IT' или 'Accounting'. Затем подзапрос используется для фильтрации результатов из основного запроса с использованием условия IN.

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

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

Оператор FROM

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

Например:

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

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

Оператор SELECT

Подзапрос также можно найти в операторе SELECT. Они обычно используются, когда вы хотите получить вычисление с использованием агрегатной функции, такой как sum, count, min, max или функция avg, но вы не хотите, чтобы агрегатная функция применялась к основному запросу.

Например:

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

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

Хитрость в размещении подзапроса в операторе SELECT заключается в том, что подзапрос должен возвращать одно значение. Вот почему в подзапросе обычно используется агрегатная функция, такая как функция sum, count, min, max или avg.