如何将多个表(具有相同的列名称)复制到新表<SQL>
?
喜欢:
CREATE TABLE t1
(
p1 longtext,
p2 longtext,
op1 varchar
op2 varchar,
);
CREATE TABLE t2
(
p1 longtext,
p2 longtext,
op1 varchar
op2 varchar,
);
CREATE TABLE t3
(
p1 longtext,
p2 longtext,
op1 varchar
op2 varchar,
);
我希望实现的是尝试将上述表t1,t2,t3复制到新表new_table中。 像:( sql错误)
CREATE TABLE new_table
AS (SELECT p1,p2,op1,op2)
FROM t1,t2,t3);
另外,如果我创建了新表,我希望每次同时更新表t1,t2,t3时new_table也会更新。 - 我需要使用触发器吗?
请帮我解决这个问题。
答案 0 :(得分:4)
我想你想使用VIEW
CREATE VIEW new_Table
AS
SELECT p1, p2, op1, op2 FROM t1
UNION ALL
SELECT p1, p2, op1, op2 FROM t2
UNION ALL
SELECT p1, p2, op1, op2 FROM t3;
如果更新了其中一个表,它会自动反映在视图上。
答案 1 :(得分:0)
如果您确实要创建表,则语法特定于RDBMS。
例如,MSSQL使用语法SELECT p1, p2, op1, op2 into MyNewTable FROM t1
UNION ALL
SELECT p1, p2, op1, op2 FROM t2
UNION ALL
SELECT p1, p2, op1, op2 FROM t3;
这会创建一个表然后填充它。要将数据插入现有表,MSSQL使用语法
INSERT INTO MyNewTable
SELECT p1, p2, op1, op2 FROM t1
UNION ALL
SELECT p1, p2, op1, op2 FROM t2
UNION ALL
SELECT p1, p2, op1, op2 FROM t3
这也取决于您使用的RDBMS
答案 2 :(得分:0)
INSERT INTO dbo.NewTable (Column1,Column2,Column3,Column4,Column5)
SELECT * FROM table1
UNION ALL
SELECT * FROM table2
UNION ALL
SELECT * FROM table3
UNION ALL
Select * from table4
UNION ALL
Select * from table5
使用全部联盟时列定义必须相同