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

WHERE句

WHERE句は、SELECTFROM句から受け取るデータをフィルタリングすることを可能にします。

WHERE句がある場合、それは通常UInt8型の式を含む必要があります。これは通常、比較演算子および論理演算子を使用した式です。この式が0に評価される行は、さらなる変換や結果から除外されます。

WHERE式は、基礎となるテーブルエンジンがそれをサポートしている場合、インデックスの使用能力やパーティションのプルーニングを考慮して評価されます。

注記

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

NULL値をテストする必要がある場合は、IS NULLおよびIS NOT NULL演算子や、isNullおよびisNotNull関数を使用してください。そうでなければ、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 │
└───┴───┘