如果我在临时表中选择多行,如何将这些行插回到同一个原始表中?
例如:
从mytable中选择* into #temp_table,其中id = 1 - 将为我的temp_table提供4行
现在我想将这4行插回到同一个原始表(mytable)中,如果我在插入后执行相同的select语句,我想在结果中看到8行,只有唯一的id。
最好和最简单的方法是什么?也许临时表根本不是好主意。
答案 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
希望这有一些帮助。祝你好运。