|NO.Z.00044|——————————|BigDataEnd|——|Hadoop&OLAP_ClickHouse.V16|——|ClickHouse.v16|ClickHouse语法|Distingct|Limit子句|
一、DISTINCT子句
### --- Distingt子句
~~~ 如果 SELECT DISTINCT 被声明,则查询结果中只保留唯一行。
~~~ 因此,在结果中所有完全匹配的行集合中,只有一行被保留。
~~~ # 空处理
~~~ DISTINCT 适用于 NULL 就好像 NULL 是一个特定的值,并且 NULL==NULL. 换句话说,
~~~ 在 DISTINCT 结果,不同的组合 NULL 仅发生一次。
~~~ 它不同于 NULL 在大多数其他情况中的处理方式。
~~~ # 替代办法
~~~ 通过应用可以获得相同的结果 GROUP BY 在同一组值指定为 SELECT 子句,
~~~ 并且不使用任何聚合函数。 但与GROUP BY 有几个不同的地方:
~~~ DISTINCT 可以与 GROUP BY 一起使用.
~~~ 当 ORDER BY 被省略并且 LIMIT 被定义时,在读取所需数量的不同行后立即停止运行。
~~~ 数据块在处理时输出,而无需等待整个查询完成运行。
~~~ # 限制
~~~ 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,我们得到以下结果:
~~~ 行 2, 4 排序前被切割。
~~~ 在编程查询时考虑这种实现特性。
┌─a─┐
│ 3 │
│ 1 │
│ 2 │
└───┘
二、LIMIT
### --- Limit
~~~ LIMIT m 允许选择结果中起始的 m 行。
~~~ LIMIT n, m 允许选择个 m 从跳过第一个结果后的行 n 行。 与 LIMIT m OFFSET n 语法是等效的。
~~~ n 和 m 必须是非负整数。
~~~ 如果没有 ORDER BY 子句显式排序结果,结果的行选择可能是任意的和非确定性的。
~~~ LIMIT … WITH TIES 修饰符如果为 LIMIT n[,m] 设置了 WITH TIES ,
~~~ 并且声明了 ORDER BY expr_list, you will get in result first n or n,
~~~ m rows and all rows with same ORDER BY fields values equal
~~~ to row at position n for LIMIT n and m for LIMIT n,m.
~~~ 此修饰符可以与: ORDER BY … WITH FILL modifier 组合使用.
### --- 例如以下查询:
hadoop01 :) SELECT * FROM (
SELECT number%50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0,5;
~~~输出参数
┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
└───┘
~~~ # 单子执行了 WITH TIES 修饰符后
~~~ cause row number 6 have same value “2” for field n as row number 5
hadoop01 :) SELECT * FROM (
SELECT number%50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0,5 WITH TIES;
~~~输出参数
┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」