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

T-SQL中创建临时表、CTE并插入数据的正确语法咨询

T-SQL临时表+CTE的正确语法写法

你的代码问题在于CTE(WITH子句)的位置错误——在T-SQL里,WITH定义的CTE必须紧跟在要使用它的DML语句(比如INSERT、SELECT)之前,不能放在CREATE TABLE之后。

下面给你两种符合语法规范的写法:

写法1:用CTE直接生成临时表(SELECT INTO)

如果不需要提前定义临时表结构,可以直接通过CTE的查询结果创建临时表:

WITH CTEDefinition AS (
    SELECT xyz FROM abc
)
SELECT * INTO #lmn  -- 临时表名前加#表示本地临时表
FROM CTEDefinition
-- 如需关联其他表,示例写法:
-- FROM CTEDefinition c
-- JOIN 目标表 t ON c.关联字段 = t.关联字段

写法2:先创建临时表结构,再用CTE插入数据

如果需要先指定临时表的字段类型或固定结构,再插入数据:

-- 先创建临时表结构,按需定义字段类型
CREATE TABLE #lmn (
    xyz INT  -- 替换为实际字段类型
)

-- 定义CTE后立即执行INSERT操作
WITH CTEDefinition AS (
    SELECT xyz FROM abc
)
INSERT INTO #lmn (xyz)
SELECT xyz FROM CTEDefinition
-- 关联其他表的示例写法:
-- SELECT c.xyz, t.其他字段
-- FROM CTEDefinition c
-- JOIN 目标表 t ON c.关联字段 = t.关联字段

注意:T-SQL里的临时表分为本地临时表(#开头)和全局临时表(##开头),日常场景用本地临时表即可,会话结束后会自动删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:54:50