2017-04-12 49 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 

希望這有一些幫助。祝你好運。