真的是关于T-SQL的新手,问题很简单。我有两个相同方案的表。我想把一个附加到另一个。我唯一知道的是'工会',例如
select * from table1
union
select * from table2
但是,这将生成一个新表并将存储空间加倍。我想知道,有没有办法通过附加另一个表直接更改一个表?有点像
insert into table1 values()
真的需要帮助! THX。
答案 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