Перейти к основному содержимому
Перейти к основному содержимому

WHERE Условие

WHERE условие позволяет фильтровать данные, которые поступают из FROM условия в SELECT.

Если есть WHERE условие, оно должно содержать выражение с типом UInt8. Обычно это выражение с операторами сравнения и логическими операторами. Строки, для которых это выражение вычисляется в 0, исключаются из дальнейших преобразований или результата.

WHERE выражение оценивается с точки зрения возможности использования индексов и обрезки партиций, если поддерживаемый движок таблицы это позволяет.

примечание

Существует оптимизация фильтрации под названием PREWHERE.

Если вам нужно проверить значение на NULL, используйте операторы IS NULL и IS NOT NULL или функции isNull и isNotNull. В противном случае выражение с NULL никогда не пройдет.

Пример

Чтобы найти числа, которые являются кратными 3 и больше 10, выполните следующий запрос на таблице чисел:

SELECT number FROM numbers(20) WHERE (number > 10) AND (number % 3 == 0);

Результат:

┌─number─┐
│     12 │
│     15 │
│     18 │
└────────┘

Запросы с значениями NULL:

CREATE TABLE t_null(x Int8, y Nullable(Int8)) ENGINE=MergeTree() ORDER BY x;
INSERT INTO t_null VALUES (1, NULL), (2, 3);

SELECT * FROM t_null WHERE y IS NULL;
SELECT * FROM t_null WHERE y != 0;

Результат:

┌─x─┬────y─┐
│ 1 │ ᴺᵁᴸᴸ │
└───┴──────┘
┌─x─┬─y─┐
│ 2 │ 3 │
└───┴───┘