使用从一个表到另一个表的insert语句将ID分配给行

时间:2012-10-11 23:07:54

标签: sql sql-server-2008

我一直在尝试将数据从临时表中的一行插入到我的数据库中的现有表中,我已经设法做了,但我还想增加已经存在的ID列在主题表中。临时表有两列,ID和关键字,但从临时表中获取的关键字I始终是第一行,因此临时表中的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

1 个答案:

答案 0 :(得分:1)

COUNT(*)更改为MAX(Topic_ID),但如果您将Topic_ID声明为Identity列,让SQLServer处理增量,那会更好

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