2012-07-30 49 views
0

真的是一个关于T-SQL的新手,这个问题很简单。我有两张相同的计划表。我想附上一个到另一个。我唯一知道的是'联盟',例如通过附加另一个表来修改表格

select * from table1 
union 
select * from table2 

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

insert into table1 values() 

真的需要帮助!谢谢。

+0

你可以创建一个视图 – Maddy 2012-07-30 08:41:43

回答

2

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

要插入从选择数据到另一个表中,可以使用以下命令:

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

但是双倍的存储,因为表2的数据将被存储在表2 table1的,直到你删除/删除表2(来源)

+0

好极了!我的一张桌子是临时的,会被丢弃。因此,存储是好的。在我提到存储的问题中,我想说的是,使用'union',我想我需要生成另一个表来存储'union'查询的结果,这会是一个问题。 – user46387 2012-07-30 08:51:41

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; 
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