PostgreSQL условие EXISTS

В этом учебном пособии вы узнаете, как использовать PostgreSQL условие EXISTS с синтаксисом и примерами.

Описание

PostgreSQL условие EXISTS используется в сочетании с подзапросом и считается "выполненным", если подзапрос возвращает хотя бы одну строку. Его можно использовать в операторе SELECT, INSERT, UPDATE или DELETE.

Синтаксис

Синтаксис для условия EXISTS в PostgreSQL:

WHERE EXISTS ( subquery );

Параметры или аргументы

subquery
Оператор SELECT, который обычно начинается с SELECT *, а не со списка выражений или имен столбцов. Чтобы повысить производительность, вы можете заменить SELECT * на SELECT 1, поскольку результат столбца подзапроса не имеет значения (имеют значение только возвращаемые строки).

Примечание

  • Операторы SQL, которые используют условие EXISTS в PostgreSQL, очень неэффективны, поскольку подзапрос перезапускается для КАЖДОЙ строки в таблице внешнего запроса. Есть более эффективные способы написания большинства запросов, которые не используют условие EXISTS.

Пример - с оператором SELECT

Рассмотрим простой пример.
Ниже приведен оператор SELECT, в котором используется PostgreSQL условие EXISTS:

В этом PostgreSQL примере условия EXISTS будут возвращены все записи из таблицы products, где в таблице inventory есть хотя бы одна запись с совпадающим product_id. Мы использовали SELECT 1 в подзапросе для повышения производительности, поскольку результирующий набор столбцов не имеет отношения к условию EXISTS (имеет значение только наличие возвращенной строки).

Пример - оператора SELECT с использованием NOT EXISTS

PostgreSQL условие EXISTS также можно комбинировать с оператором NOT.
Например,

В этом PostgreSQL примере EXISTS будут возвращены все записи из таблицы products, где в таблице inventory нет записей для данного product_id)

Пример - с оператором INSERT

Ниже приведен пример оператора INSERT, в котором используется PostgreSQL условие EXISTS:

Пример - с оператором UPDATE

Ниже приведен пример оператора UPDATE, в котором используется PostgreSQL условие EXISTS:

Пример - с оператором DELETE

Ниже приведен пример оператора DELETE, который использует PostgreSQL условие EXISTS: