---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ydb.tech/docs/en/yql/reference/syntax/discard.md?version=main
  - https://ydb.tech/docs/ru/yql/reference/syntax/discard.md?version=main
sourcePath: ru/core/yql/reference/syntax/discard.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt


# DISCARD

Вычисляет [`SELECT`](https://ydb.tech/docs/ru/yql/reference/syntax/select/index.md?version=main), но не возвращает результат ни в клиент, ни в таблицу.

Полезно использовать в сочетании с [`Ensure`](https://ydb.tech/docs/ru/yql/reference/builtins/basic.md?version=main#ensure) для проверки выполнения пользовательских условий на финальный результат вычислений.


Запрос с `DISCARD` выполняется полностью — со всеми фильтрами, агрегациями и проверками `Ensure`, — но результирующий набор (result set) не возвращается клиенту. Данные при этом не пересылаются по сети: клиент получает только статус выполнения запроса. На больших выборках это заметно экономит трафик и память.

В запросе из нескольких операторов `DISCARD` действует на отдельный оператор:

```yql
SELECT 1;          -- вернётся
DISCARD SELECT 2;  -- выполнится, но в ответ не попадёт
SELECT 3;          -- вернётся
```

Клиент получит два результирующих набора — от первого и третьего оператора.

`DISCARD` применяется только к оператору целиком, использовать его внутри выражений нельзя. В частности, недопустимо:

* в подзапросах — `SELECT * FROM (DISCARD SELECT 1)`;
* в `WHERE ... IN (...)` — `SELECT * FROM my_table WHERE Key IN (DISCARD SELECT 1)`;
* в операндах `UNION ALL` — `SELECT 1 UNION ALL DISCARD SELECT 2`.

{% note info %}

`DISCARD` поддерживается при выполнении запросов через сервис исполнения запросов (Query Service) начиная с версии YDB 26.2. При выполнении через устаревшие интерфейсы (Table Service, скан-запросы) `DISCARD` игнорируется, и результат возвращается клиенту — поведение сохранено для обратной совместимости.

{% endnote %}



## Примеры

```yql
DISCARD SELECT 1;
```


```yql
DISCARD SELECT Ensure(
    Data,
    Data < 1000000,
    "Value too big"
) FROM `result_table`;
```

Если условие `Ensure` нарушено, запрос завершится ошибкой. Если всё в порядке — запрос отработает успешно, а клиент не получит результирующий набор, который иначе пришлось бы выкачивать целиком.


