从简单的 UNION 语句创建 table

Create table from simple UNION statement

这个联盟有什么问题?首先 'select' 和 ')' 不正确

create table GL_ALL
(
   select *from GL1
)
UNION
(
   select *from GL2
)
UNION
(
   select *from GL3
)
UNION
(
   select *from GL4
)
UNION
(
   select *from GL5
);

这不是在 SQL 服务器中即时创建 table 或 UNION 的正确语法。

假设每个 table 的架构 都是相同的

SELECT *
INTO GL_ALL FROM GL1 UNION
SELECT * FROM GL2 UNION
SELECT * FROM GL3 UNION
SELECT * FROM GL4 UNION
SELECT * FROM GL5;

正如评论中所指出的,这将适用于 GL_ALL 的初始创建,但不适用于创建 table 之后的后续插入。

如果您以后需要附加到 table,则语法更改为:

INSERT INTO GL_ALL
SELECT * FROM GL6;

重要的是要认识到新的 table 没有主键,也没有任何外键、索引(聚集或非聚集的)、约束、默认值等,源 tables可能有。如果需要这些,那么您将需要手动创建它们。

请注意 UNIONUNION ALL 之间的区别,其中 UNION 将排除重复行。

另请注意,最佳做法是避免 SELECT * 并明确指出您要使用的列 - 即使它实际上 所有列。