真的是一个关于T-SQL的新手,这个问题很简单。我有两张相同的计划表。我想附上一个到另一个。我唯一知道的是'联盟',例如通过附加另一个表来修改表格
select * from table1
union
select * from table2
但是,这会生成一个新表,并将存储空间加倍。我想知道,有没有办法通过附加另一个表来直接更改一个表格?有些事像
insert into table1 values()
真的需要帮助!谢谢。
真的是一个关于T-SQL的新手,这个问题很简单。我有两张相同的计划表。我想附上一个到另一个。我唯一知道的是'联盟',例如通过附加另一个表来修改表格
select * from table1
union
select * from table2
但是,这会生成一个新表,并将存储空间加倍。我想知道,有没有办法通过附加另一个表来直接更改一个表格?有些事像
insert into table1 values()
真的需要帮助!谢谢。
联合不会“创建存储”,因为它在运行时组合了查询。联盟可能需要的唯一存储空间是进行排序,分组和类似事情的临时空间。
要插入从选择数据到另一个表中,可以使用以下命令:
insert into table1 (col1, col2, col3)
select col1, col2, col3
from table2
但是将双倍的存储,因为表2的数据将被存储在表2 和 table1的,直到你删除/删除表2(来源)
好极了!我的一张桌子是临时的,会被丢弃。因此,存储是好的。在我提到存储的问题中,我想说的是,使用'union',我想我需要生成另一个表来存储'union'查询的结果,这会是一个问题。 – user46387 2012-07-30 08:51:41
这可以使用简单的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;
你的目标是什么,你试图做什么?正如在第一条评论中指出的那样,您可以使用这些表创建一个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
你可以创建一个视图 – Maddy 2012-07-30 08:41:43