You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ClickHouse中如何将子查询结果插入临时表?

ClickHouse 替代 SQL Server SELECT INTO 临时表的实现方法

ClickHouse 不支持 SQL Server 中 SELECT * INTO #temp FROM (...) 的语法,以下是两种常用的替代方案,同时说明临时表的引擎相关问题:

方案1:先创建临时表再插入数据

用 TEMPORARY TABLE 关键字创建临时表,无需手动指定 Engine(ClickHouse 会自动使用 Memory 引擎作为临时表的默认引擎):

-- 定义临时表结构,替换为实际字段类型
CREATE TEMPORARY TABLE #temp (
    cl1 String,
    cl2 Int64,
    cl3 DateTime,
    ...
);

-- 插入子查询结果
INSERT INTO #temp
SELECT cl1, cl2, cl3, ... FROM TABLE1 WHERE cl1 = 'A';

方案2:通过 AS SELECT 自动创建临时表

如果不想手动定义字段类型,可以直接基于子查询结果创建临时表,ClickHouse 会自动推断字段的类型和结构:

CREATE TEMPORARY TABLE #temp AS
SELECT cl1, cl2, cl3, ... FROM TABLE1 WHERE cl1 = 'A';

关于临时表的 Engine 说明

ClickHouse 的临时表默认使用 Memory 引擎,数据存储在内存中,当会话结束时会自动销毁。如果需要跨会话保留临时数据,那就不能用临时表,得创建普通表并指定 MergeTree 系列引擎(如 MergeTree、ReplacingMergeTree 等),但这种表需要手动删除或清理。

内容的提问来源于stack exchange,提问作者Amirhossein Omidifard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:52:04