sql server更新字段信息,让其自动增长

clipboard.png
如图所示,默认的查询出的信息如上,我现在想要的操作是,p_id的排序方式递增,而对应的pc_id改成 1、2、3、4、5..这样一次递增,先贴出我的处理方式--(mysql中的处理)

set @rownum=0;
update product
SET pc_id = (select @rownum := @rownum +1 as nid) ORDER BY p_id asc

可是这种在mysql中可以,但在sql server中不行,大神你们的方法怎样?

阅读 2.8k
1 个回答

自增序号使用row_number函数,sqlserver 2008支持merge的写法,如:

merge t as target
using (select p_id, row_number() over (order by p_id)  as pc_id_seq from t ) as source
on (target.p_id = source.p_id)
when matched then
update set target.pc_id = source.pc_id_seq;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题