DISTINCT句
SELECT DISTINCT
が指定されている場合、クエリ結果には唯一の行のみが残ります。したがって、結果内の完全に一致する行のセットの中から、1行だけが残ります。
一意の値を持つ必要があるカラムのリストを指定できます:SELECT DISTINCT ON (column1, column2,...)
。カラムが指定されていない場合、すべてのカラムが考慮されます。
テーブルを考慮してください:
カラムを指定せずにDISTINCT
を使用する場合:
指定されたカラムでDISTINCT
を使用する場合:
DISTINCTとORDER BY
ClickHouseは、1つのクエリ内で異なるカラムに対してDISTINCT
とORDER BY
句を使用することをサポートしています。DISTINCT
句は、ORDER BY
句の前に実行されます。
テーブルを考慮してください:
データを選択する場合:
異なる並び順でデータを選択する場合:
行2, 4
はソート前にカットされました。
クエリをプログラミングする際には、この実装の特性を考慮してください。
NULL処理
DISTINCT
は、NULLを特定の値のように扱い、NULL==NULL
とします。言い換えれば、DISTINCT
の結果では、NULL
を含む異なる組み合わせは1回だけ発生します。これは、ほとんどの他のコンテキストでのNULL
処理とは異なります。
代替案
同じセットの値に対してGROUP BYを適用することで、同じ結果を得ることができます。集約関数を使用することなく、SELECT
句で指定されたものです。ただし、GROUP BY
アプローチにはいくつかの違いがあります: