通过附加另一个表来改变表格

时间:2012-07-30 08:34:20

标签: sql sql-server tsql

真的是关于T-SQL的新手,问题很简单。我有两个相同方案的表。我想把一个附加到另一个。我唯一知道的是'工会',例如

select * from table1 
union 
select * from table2

但是,这将生成一个新表并将存储空间加倍。我想知道,有没有办法通过附加另一个表直接更改一个表?有点像

insert into table1 values()

真的需要帮助! THX。

3 个答案:

答案 0 :(得分:2)

union不会“创建存储”,因为它在运行时组合了查询。联合可能需要的唯一存储是用于进行排序,分组和类似事件的临时空间。

要将select中的数据插入另一个表,您可以使用以下内容:

insert into table1 (col1, col2, col3)
select col1, col2, col3
from table2

加倍存储,因为table2的数据将存储在table2 table1中,直到您删除/删除table2(源代码)

答案 1 :(得分:0)

如果你不担心重复记录需要更新或保持不变,可以使用简单的insert into来完成。

注意:两个表应具有相同的结构和数据类型长度。

逐步查看此示例代码。 此示例将emp_backup表中的数据插入到emp表中。

CREATE table emp
(
empid int,
fname varchar(20),
lname varchar(20)
);

INSERT INTO emp VALUES(1,'vish','dalvi');
INSERT INTO emp VALUES(2,'rohit','kale');
INSERT INTO emp VALUES(3,'vishal','gr');

SELECT * FROM emp;

CREATE table emp_backup
(
empid int,
fname varchar(20),
lname varchar(20)
);

INSERT INTO emp_backup VALUES(6,'mark','novak');
INSERT INTO emp_backup VALUES(7,'gar','pandey');


INSERT into emp
SELECT * FROM emp_backup;

SELECT * FROM emp;

答案 2 :(得分:0)

你的目标是什么,你想做什么?正如在第一条评论中指出的那样,您可以使用这些表创建VIEW,然后使用该视图启动SELECT以获取从两个表合并的结果。但在原始情况下,原始表格将保持彼此独立。要创建视图,请参阅CREATE VIEW definition and syntax,但基本上您可以运行以下命令:

CREATE VIEW table1_table2
AS
SELECT *
  FROM Table1
 UNION ALL
SELECT *
  FROM Table2

然后只需SELECT * FROM table1_table2来获取两个表中的所有行

另一种选择,也许你在寻找什么,是从一个表中获取数据,插入另一个表然后删除第一个表。

INSERT INTO Table1
SELECT * FROM Table2

TRUNCATE Table2
DROP Table2

SELECT * FROM Table1