2017-04-12 95 views
1

如果我将多行插入临时表中,如何将这些行插回到同一个原始表中?
例如:
从mytable中选择*到#temp_table其中id = 1 - 将为我的temp_table提供4行。
现在我想将这4行插回到同一个原始表(mytable)中,并且如果在插入后我将执行相同的select语句,我希望在只有唯一id的结果中看到8行。mssql - 从临时表中将多行重新插入原始表

什么是最好和最简单的方法呢?也许临时桌子根本不是好主意。

回答

2

如果你只是想从临时表中直接添加一切回归到myTable的,那么你可以简单地做到这一点:

Insert into mytable 
Select * from #temp_table 

如果您需要重复使用临时表,然后记得之前清除这个添加下一个条目很多:

delete from #temp_table 

当然,它会跳过临时表的部分更容易放在一起,如果你只是想添加一个表背一些条目到本身:

Insert into mytable 
Select * from mytable where id=1 

这里有一点需要注意,如果你在mytable中有一个自动递增的标识列(例如主键),这将不起作用,因为select *会尝试再次将ID插入表中,不允许(必须是唯一的)。因此,您最好指定列名称,而不是使用select *。这个例子会更好:

Insert into mytable (column1Name, column2Name) 
Select column1Name, column2Name from mytable where id=1 

希望这有一些帮助。祝你好运。