4

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

请帮我解决这个问题。

4

3 回答 3

5

我猜你想用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;

如果任何一个表被更新,它会自动反映在视图上。

于 2012-11-24T08:05:35.307 回答
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
于 2014-01-09T05:49:57.663 回答
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

于 2012-11-24T08:31:06.487 回答