Команда EXISTS
Команда EXISTS используется для проверки,
возвращает ли подзапрос хотя бы одну строку.
Если подзапрос возвращает хотя бы одну запись,
выражение EXISTS считается истинным.
Чаще всего применяется внутри условия
WHERE.
Синтаксис
SELECT column_list FROM table_name
WHERE EXISTS (
SELECT 1
FROM related_table
WHERE condition
)
Таблицы для примеров
| id | name |
|---|---|
| 1 | Belarus |
| 2 | Rossiya |
| 3 | Ukraina |
| id | name | country_id |
|---|---|---|
| 1 | Minsk | 1 |
| 2 | Vitebsk | 1 |
| 3 | Moskva | 2 |
| 4 | Sankt-Peterburg | 2 |
Пример
Давайте выберем только те страны, для которых существует хотя бы один город:
SELECT 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 |
Пример
Давайте выберем страны, у которых отсутствуют связанные города:
SELECT id, name FROM countries
WHERE NOT EXISTS (
SELECT 1
FROM cities
WHERE cities.country_id = countries.id
)
ORDER BY id
Результат выполнения кода:
| id | name |
|---|---|
| 3 | Ukraina |