0

一時テーブルの 1 つの行からデータベースの既存のテーブルにデータを挿入しようとしましたが、これはなんとか実行できましたが、Topic テーブルに既に存在する ID 列もインクリメントしたいと考えています。一時テーブルにはIDとキーワードの2つの列がありますが、一時テーブルから取得しているキーワードは常に最初の行であるため、一時テーブルではIDは常に1になりますが、IDはトピック テーブル + 1。

これが以前に尋ねられた場合は申し訳ありません。何を検索すればよいかわかりませんでした。

これは私がこれまでに持っているものです。正しい軌道に乗っているかどうかはわかりません:

 --declare topic id and set it as one more than the current number of rows
 DECLARE @T_ID int
 SET @T_ID = (SELECT COUNT(*) FROM Topic)+1

 --insert keyword into Topic table
 INSERT INTO Topic(Topic_ID, Topic_Name)
 SELECT keyword FROM #tempKeywords 
 WHERE ID = 1
4

1 に答える 1

1

に変更しCOUNT(*) ますが、SQLServer がインクリメントを処理できるように Identity 列としてMAX(Topic_ID)宣言した方がよいでしょう。Topic_ID

SET @T_ID = (SELECT ISNULL(MAX(Topic_ID),0)+1 FROM Topic)

 --insert keyword into Topic table
 INSERT INTO Topic(Topic_ID, Topic_Name)
 SELECT @T_ID, keyword FROM #tempKeywords 
 WHERE ID = 1

Topic_ID 列を Identity に変更すると、

 --insert keyword into Topic table
 INSERT INTO Topic(Topic_Name)
 SELECT keyword FROM #tempKeywords 
 WHERE ID = 1
于 2012-10-11T23:15:16.387 に答える