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

SQL Server 2014中WITH子句结合SELECT * INTO报错求助

SQL Server 2014中CTE结合SELECT INTO备份表的解决方法

你的错误根源有两个:一是CTE不能嵌套在子查询的FROM子句内部,二是原查询的SELECT列列表中缺少逗号,这也是语法错误。

以下是修正后的正确写法:

WITH LIST AS 
(
    SELECT column1 
    FROM table1
    UNION
    SELECT column1
    FROM table2
    UNION 
    SELECT column1
    FROM table3
    WHERE column1 IS NOT NULL
)
SELECT
    a.column1,
    a.column2,
    a.column3
INTO backup_table
FROM table2 a
WHERE a.column6 NOT IN (SELECT column1 FROM LIST) -- 原代码中field1与LIST定义的column1不匹配,需修正
  AND a.column3 = '1'
-- ORDER BY可移除,SELECT INTO创建的表不会保留排序逻辑

关键修正点说明:

  1. CTE位置调整:将WITH LIST AS ...移到整个语句的最开头,CTE必须作为独立的语句块存在,不能嵌套在子查询中。
  2. 补全列逗号:原查询的SELECT列表中,a.column1、a.column2之间缺少逗号,这会直接导致语法错误,必须补上。
  3. 修正子查询列名:原代码中子查询引用的field1与LIST定义的列名column1不匹配,需统一列名避免报错。
  4. 移除不必要的子查询包裹:不需要把主查询用(...) a包裹,SELECT ... INTO可以直接跟在CTE之后执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:15:33