什么是公共表表达式(CTE) ?在本文中,学习如何在 ClickHouse 数据库中使用 CTE,并通过示例跟踪用例
在下列情况下使用 CTE 很方便:
- 当一个请求可以获得数据,并且其大小适合内存空间时
- 需要多次使用此查询的结果
- 创建递归查询
额外的好处是提高了 SQL 查询的可读性。
CTE 与临时表和嵌套查询之间的区别是什么?
- 如果子查询是相关的,那么它的调用将针对选定内容中的每一行重复,从而显著增加执行此查询的成本。
- 用大量数据填充临时表会在磁盘上造成负载。
- 由于存储临时表的特殊性,使用临时表执行查询会增加执行时间。
语法
ClickHouse 既支持 WITH< 表达式 > AS < 标识符 > ,也支持 WITH< 标识符 > AS < 子查询表达式 > 语法。
- 使用 WITH 初始化 CTE。
- 为查询提供名称。
- 接着是 AS。
- 定义查询
- 如果需要多个 CTE,请用逗号分隔它们。
WITH locations AS
(
SELECT location
FROM table
WHERE date > (today() - 10)
)
SELECT *
FROM locations
- 使用 WITH 初始化 CTE。
- 定义一个表达方式
- 接着是 AS。
- 为表达式提供名称。
- 如果需要多个 CTE,请用逗号分隔它们。
WITH ('USA', 'BRA') AS locations
SELECT 'ARG' IN (locations)
例子
建表:
**
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于