如何将多个表(具有相同的列名称)复制到新表<sql>。?</sql>

时间:2012-11-24 08:02:12

标签: mysql copy

如何将多个表(具有相同的列名称)复制到新表<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也会更新。 - 我需要使用触发器吗?

请帮我解决这个问题。

3 个答案:

答案 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

使用全部联盟时列定义必须相同