メインコンテンツまでスキップ
メインコンテンツまでスキップ

WHERE句

WHERE 句は、SELECTFROM 句からのデータをフィルタリングするために使用されます。

WHERE 句がある場合、それは UInt8 型の式を含まなければなりません。通常、これは比較演算子や論理演算子を含む式です。この式が 0 と評価される行は、さらなる変換や結果から除外されます。

WHERE 式は、基盤となるテーブルエンジンがサポートしていれば、インデックスの使用能力とパーティションプルーニングに基づいて評価されます。

注記

PREWHERE というフィルタリング最適化があります。

NULL 値をテストする必要がある場合は、IS NULLIS NOT NULL 演算子、または isNullisNotNull 関数を使用してください。 そうしないと、NULL を含む式は決して通過しません。

3の倍数で10より大きい数を見つけるために、numbers table に対して次のクエリを実行します。

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 │
└───┴───┘