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アプローチにはいくつかの違いがあります: