Команда EXISTS

Команда EXISTS используется для проверки, возвращает ли подзапрос хотя бы одну строку. Если подзапрос возвращает хотя бы одну запись, выражение EXISTS считается истинным. Чаще всего применяется внутри условия WHERE.

Синтаксис

sqlSELECT column_list FROM table_name
WHERE EXISTS (
  SELECT 1
  FROM related_table
  WHERE condition
)

Таблицы для примеров

countries
id name
1 Belarus
2 Rossiya
3 Ukraina
cities
id name country_id
1 Minsk 1
2 Vitebsk 1
3 Moskva 2
4 Sankt-Peterburg 2

Пример

Давайте выберем только те страны, для которых существует хотя бы один город:

sqlSELECT id, name FROM countries
WHERE EXISTS (
  SELECT 1
  FROM cities
  WHERE cities.country_id = countries.id
)
ORDER BY id

Результат выполнения кода:

id name
1 Belarus
2 Rossiya

Пример

Давайте выберем страны, у которых отсутствуют связанные города:

sqlSELECT id, name FROM countries
WHERE NOT EXISTS (
  SELECT 1
  FROM cities
  WHERE cities.country_id = countries.id
)
ORDER BY id

Результат выполнения кода:

id name
3 Ukraina

Смотрите также

  • команду SELECT,
    которая делает выборку данных
  • команду WHERE,
    которая задаёт условия отбора
  • команду JOIN,
    которая связывает таблицы
  • команду IN,
    которая проверяет вхождение в список