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

MS SQL Server中使用CREATE TABLE结合SELECT语句创建新表时出现语法错误的问题求助

MS SQL Server中使用CREATE TABLE结合SELECT语句创建新表时出现语法错误的问题求助

嗨,这问题我之前踩过坑!你之所以会报语法错误,是因为用了其他数据库(比如MySQL、Oracle)的语法,MS SQL Server并不支持这种写法~

先还原下你的问题场景:

执行 SELECT * FROM dbo.transactions 时能正常返回所有行和列,但尝试用以下两种方式创建新表时总是报错:

CREATE TABLE dbo.all_transactions
SELECT *
FROM dbo.transactions

或者

CREATE TABLE dbo.all_transactions AS
SELECT *
FROM dbo.transactions

错误信息都是:Msg 156, Level 15, State 1, Line 2 Incorrect syntax near the keyword 'SELECT'

给你两个SQL Server原生支持的正确写法:

方法一:用SELECT INTO直接创建表并插入数据

这是最便捷的方式,会自动根据查询结果的结构生成新表,同时把数据同步进去:

SELECT *
INTO dbo.all_transactions
FROM dbo.transactions

⚠️ 注意:如果dbo.all_transactions这个表已经存在,这条语句会报错,适合用来创建全新的空表+导入数据。

方法二:先创建表结构,再插入数据

如果已经提前创建了目标表(或者需要手动自定义表结构),可以用INSERT INTO结合SELECT来导入数据:

-- 先手动创建和原表结构匹配的表(如果还没建)
CREATE TABLE dbo.all_transactions (
    transaction_id INT,
    amount DECIMAL(18,2),
    -- 这里要和transactions表的列一一对应,按需添加其他列
)

-- 再从原表导入数据
INSERT INTO dbo.all_transactions
SELECT * FROM dbo.transactions

总结下:SQL Server不支持CREATE TABLE ... AS SELECT或者CREATE TABLE直接后跟SELECT的语法,换成上面两种写法就能解决问题啦!

备注:内容来源于stack exchange,提问作者Marcin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 10:52:42