SQL Server中如何将UNION ALL结果存入新表或H1表?
解决UNION ALL结果存入表的语法错误问题
错误原因分析
- 版本1错误:SQL Server要求
FROM后的子查询必须指定别名,你的子查询未设置别名,触发语法报错。 - 版本2错误:
CREATE TABLE ... AS SELECT是MySQL、PostgreSQL等数据库的语法,SQL Server不支持该写法。
正确写法
写法1:修正SELECT INTO语句(自动创建表结构,推荐)
给子查询添加别名即可:
SELECT * INTO [H1_2020_trips_cyclistic] FROM ( SELECT * FROM [capstone].[dbo].[Divvy_Trips_2020_Q1$] AS Q1 UNION ALL SELECT * FROM [capstone].[dbo].['202004-divvy-tripdata$'] AS April UNION ALL SELECT * FROM [capstone].[dbo].['202005-divvy-tripdata$'] AS May UNION ALL SELECT * FROM [capstone].[dbo].['202006-divvy-tripdata$'] AS June ) AS CombinedTrips -- 为子查询添加别名
写法2:先建表再插入数据(适合自定义表结构场景)
如果需要手动指定字段类型、约束等表结构,可先创建表再插入数据:
-- 先创建表(字段需与UNION ALL结果匹配) CREATE TABLE [H1_2020_trips_cyclistic] ( -- 示例字段,需替换为实际源表字段 ride_id VARCHAR(50), rideable_type VARCHAR(20), started_at DATETIME, ended_at DATETIME, -- 其他字段... ) -- 插入UNION ALL结果 INSERT INTO [H1_2020_trips_cyclistic] SELECT * FROM [capstone].[dbo].[Divvy_Trips_2020_Q1$] UNION ALL SELECT * FROM [capstone].[dbo].['202004-divvy-tripdata$'] UNION ALL SELECT * FROM [capstone].[dbo].['202005-divvy-tripdata$'] UNION ALL SELECT * FROM [capstone].[dbo].['202006-divvy-tripdata$']
内容的提问来源于stack exchange,提问作者user23218947
相关产品推荐
相关产品推荐

