Microsoft SQL Server使用UNION ALL多表合并建表报语法错误如何解决
SQL Server UNION ALL 合并表报错修正方案
报错核心原因
你遇到的语法报错和子查询内部表是否设置别名无关,主要由两个语法错误导致:
- 子查询末尾多余了
UNION ALL关键字:UNION ALL作用是拼接前后两个查询语句,只能出现在两个SELECT块之间,最后一个查询的后面不能加该关键字 - 带空格的表名未用标识符包裹:如果你的表名确实包含空格(如示例中的
table 1、table 2),SQL Server会将空格前后识别为独立语法元素,需要用方括号[]包裹带特殊字符、空格的标识符
常见疑问解答
不需要为子查询内的每个表单独设置别名,你已经给外层派生表设置了sub别名,该配置符合SQL Server语法要求。
修正后的SQL示例
SELECT * INTO NewTable FROM ( SELECT * FROM [table 1] UNION ALL SELECT * FROM [table 2] -- 剩余14个结构相同的表按上面的格式依次添加,最后一个表的查询后面不要加UNION ALL ) AS sub
额外注意事项
- 所有参与
UNION ALL的表需要保证字段数量、字段顺序、对应字段的数据类型完全一致,否则语法校验通过后运行时也会抛出错误 - 若需要对合并后的数据做过滤、聚合等操作,可以直接在外层对派生表
sub进行查询操作
内容的提问来源于stack exchange,提问作者George Zambrano
相关产品推荐
相关产品推荐

