Sql 通过附加另一个表来更改表

Sql 通过附加另一个表来更改表,sql,sql-server,tsql,Sql,Sql Server,Tsql,我是T-SQL的新手,问题很简单。我有两张相同方案的桌子。我想把一个连接到另一个。我只知道“联合”,例如 select * from table1 union select * from table2 但是,这将生成一个新表,并将存储空间增加一倍。我想知道,有没有办法通过附加另一张表来直接更改一张表?比如 insert into table1 values() 真的需要帮助!Thx.联合不会“创建存储”,因为它会在运行时组合查询。工会可能需要的唯一存储空间是临时空间,用于进行排序、分组等

我是T-SQL的新手,问题很简单。我有两张相同方案的桌子。我想把一个连接到另一个。我只知道“联合”,例如

select * from table1 
union 
select * from table2
但是,这将生成一个新表,并将存储空间增加一倍。我想知道,有没有办法通过附加另一张表来直接更改一张表?比如

insert into table1 values()
真的需要帮助!Thx.

联合不会“创建存储”,因为它会在运行时组合查询。工会可能需要的唯一存储空间是临时空间,用于进行排序、分组等操作

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

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

但是,加倍存储,因为表2的数据将存储在表2和表1中,直到您删除/删除表2(源)

如果您不担心重复记录需要更新或保持原样,可以使用简单的
插入

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

逐步查看此示例代码。 本例将emp_备份表中的数据插入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;

你的目标是什么,你想做什么?正如在第一条注释中指出的,您可以使用这些表创建一个视图,然后使用该视图启动SELECT以获得从两个表合并的结果。但从物理上讲,原始表将保持彼此独立。要创建视图,请参见,但基本上可以运行以下命令:

CREATE VIEW table1_table2
AS
SELECT *
  FROM Table1
 UNION ALL
SELECT *
  FROM Table2
然后只需执行
SELECT*fromtable1\u table2
即可从两个表中获取所有行

另一种选择,可能是您正在寻找的,是从一个表中获取数据,插入到另一个表中,然后删除第一个表

INSERT INTO Table1
SELECT * FROM Table2

TRUNCATE Table2
DROP Table2

SELECT * FROM Table1

你可以创建一个视图而不是太棒了!我的一张桌子是临时的,可能会被丢弃。因此,存储是正常的。在我提到存储的问题中,我实际上想说使用“union”,我想我需要生成另一个表来存储“union”查询的结果,这将是一个问题。