|NO.Z.00037|——————————|BigDataEnd|——|Hadoop&OLAP_ClickHouse.V09|——|ClickHouse.v09|ClickHouse语法|From子句|
一、FROM子句
### --- FROM 子句指定从以下数据源中读取数据:
~~~ 表
~~~ 子查询
~~~ 表函数
~~~ JOIN 和 ARRAY JOIN 子句也可以用来扩展 FROM 的功能
~~~ 子查询是另一个 SELECT 可以指定在 FROM 后的括号内的查询。
~~~ FROM 子句可以包含多个数据源,用逗号分隔,这相当于在他们身上执行 CROSS JOIN
~~~ FINAL 修饰符
~~~ 当 FINAL 被指定,ClickHouse会在返回结果之前完全合并数据,
~~~ 从而执行给定表引擎合并期间发生的所有数据转换。
~~~ # 它适用于从使用 MergeTree-引擎族(除了 GraphiteMergeTree). 还支持:
~~~ Replicated 版本 MergeTree 引擎
~~~ View, Buffer, Distributed,和 MaterializedView 在其他引擎上运行的引擎,
~~~ 只要是它们底层是 MergeTree-引擎表即可。
~~~ # 缺点
~~~ 使用的查询 FINAL 执行速度不如类似的查询那么快,因为:
~~~ 查询在单个线程中执行,并在查询执行期间合并数据。
~~~ 查询与 FINAL 除了读取查询中指定的列之外,还读取主键列。
~~~ 在大多数情况下,避免使用 FINAL.
~~~ 常见的方法是使用假设后台进程的不同查询 MergeTree 引擎还没有发生,
~~~ 并通过应用聚合(例如,丢弃重复项)来处理它。
### --- 实现细节
~~~ 如果 FROM 子句被省略,数据将从读取 system.one 表。
~~~ 该 system.one 表只包含一行(此表满足与其他 DBMS 中的 DUAL 表有相同的作用)。
~~~ 若要执行查询,将从相应的表中提取查询中列出的所有列。
~~~ 外部查询不需要的任何列都将从子查询中抛出。 如果查
~~~ 询未列出任何列(例如, SELECT count() FROM t),
~~~ 无论如何都会从表中提取一些列(首选是最小的列),以便计算行数。
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 热点速览」