mssql - 从临时表中将多行插回原始表

时间:2017-04-12 19:35:10

标签: sql-server

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

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

1 个答案:

答案 0 :(得分: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

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