2017-04-12 9 views
1

一時テーブルに複数の行を選択した場合、これらの行を同じ元のテーブルに挿入する方法はありますか?
例:
*を#temp_table from mytableから選択します。ここで、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で自動増分ID列(たとえば主キー)を使用している場合、select *はisnというテーブルにIDを再度挿入しようとするため、これはうまくいきません許可されている(一意でなければならない)。したがって、select *を使用する代わりに、列名を指定することをお勧めします。この例はより良いでしょう:

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

希望はこれです。がんばろう。

関連する問題