从简单的 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可能有。如果需要这些,那么您将需要手动创建它们。
请注意 UNION
和 UNION ALL
之间的区别,其中 UNION
将排除重复行。
另请注意,最佳做法是避免 SELECT *
并明确指出您要使用的列 - 即使它实际上 是 所有列。
这个联盟有什么问题?首先 '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可能有。如果需要这些,那么您将需要手动创建它们。
请注意 UNION
和 UNION ALL
之间的区别,其中 UNION
将排除重复行。
另请注意,最佳做法是避免 SELECT *
并明确指出您要使用的列 - 即使它实际上 是 所有列。