mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-07 16:14:52 +00:00
2.0 KiB
2.0 KiB
machine_translated | machine_translated_rev | toc_title |
---|---|---|
true | 5decc73b5d |
DISTINCT |
DISTINCT子句
如果 SELECT DISTINCT
如果指定,则查询结果中只保留唯一行。 因此,在结果中所有完全匹配的行集合中,只有一行将保留。
空处理
DISTINCT
适用于 NULL 就好像 NULL
是一个特定的值,并且 NULL==NULL
. 换句话说,在 DISTINCT
结果,不同的组合 NULL
仅发生一次。 它不同于 NULL
在大多数其他上下文中进行处理。
替代办法
通过应用可以获得相同的结果 GROUP BY 在同一组值指定为 SELECT
子句,而不使用任何聚合函数。 但有几个区别 GROUP BY
方法:
限制
DISTINCT
如果不支持 SELECT
具有至少一个数组列。
例
ClickHouse支持使用 DISTINCT
和 ORDER BY
一个查询中不同列的子句。 该 DISTINCT
子句之前执行 ORDER BY
条款
示例表:
┌─a─┬─b─┐
│ 2 │ 1 │
│ 1 │ 2 │
│ 3 │ 3 │
│ 2 │ 4 │
└───┴───┘
当与选择数据 SELECT DISTINCT a FROM t1 ORDER BY b ASC
查询,我们得到以下结果:
┌─a─┐
│ 2 │
│ 1 │
│ 3 │
└───┘
如果我们改变排序方向 SELECT DISTINCT a FROM t1 ORDER BY b DESC
,我们得到以下结果:
┌─a─┐
│ 3 │
│ 1 │
│ 2 │
└───┘
行 2, 4
分拣前被切割。
在编程查询时考虑这种实现特异性。