This commit is contained in:
Alexey 2021-11-16 19:15:02 +00:00
parent da76c4053c
commit 4581b37da5
3 changed files with 49 additions and 1 deletions

View File

@ -0,0 +1,31 @@
# EXISTS {#exists-operator}
Оператор `EXISTS` проверяет, сколько строк возвращает подзапрос. Если результат пустой, то оператор возвращает `0`. В остальных случаях оператор возвращает `1`.
`EXISTS` может быть использован в секции [WHERE](../../sql-reference/statements/select/where.md).
!!! warning "Предупреждение"
Ссылки на таблицы или столбцы основного запроса не поддерживаются в подзапросе.
**Синтаксис**
```sql
WHERE EXISTS(subquery)
```
**Пример**
Запрос:
``` sql
SELECT 'Exists' WHERE EXISTS (SELECT * FROM numbers(10) WHERE number < 2);
SELECT 'Empty subquery' WHERE EXISTS (SELECT * FROM numbers(10) WHERE number > 12);
```
Первый запрос возвращает одну строку, а второй запрос не возвращает строк, так как результат его подзапроса пустой:
``` text
┌─'Exists'─┐
│ Exists │
└──────────┘
```

View File

@ -72,7 +72,7 @@ toc_title: "Операторы"
## Операторы для работы с множествами {#operatory-dlia-raboty-s-mnozhestvami}
*Смотрите раздел [Операторы IN](../../sql-reference/operators/in.md#select-in-operators).*
Смотрите [операторы IN](../../sql-reference/operators/in.md#select-in-operators) и оператор [EXISTS](../../sql-reference/operators/exists.md).
`a IN ...` - функция `in(a, b)`

View File

@ -27,3 +27,20 @@ SELECT * FROM t_null WHERE y IS NULL
!!! note "Примечание"
Существует оптимизация фильтрации под названием [prewhere](prewhere.md).
**Пример**
Чтобы найти числа, которые кратны 3 и больше 10, можно выполнить запрос к [таблице numbers](../../../sql-reference/table-functions/numbers.md):
``` sql
SELECT number FROM numbers(20) WHERE (number > 10) AND (number % 3 == 0);
```
Результат:
``` text
┌─number─┐
│ 12 │
│ 15 │
│ 18 │
└────────┘
```