当前位置: 代码迷 >> Sql Server >> 更新某列内容,且按递增写入
  详细解决方案

更新某列内容,且按递增写入

热度:87   发布时间:2016-04-24 09:47:21.0
更新某列内容,且按递增写入,在线等
如题,在表base中新增了一字段 zh  :nvarchar(8) ,允许空,表共有3105行,现需要对字段zh进行更新,第一行值为 31010001,下一行在前一行 递增1,最后一行值为 31013105,用游标处理卡死,现请高手支招,谢谢!说明:表base中有其它字段,oldzh是主键,nvarchar(14),字段zh更新好后将删除字段 oldzh,并将zh设成新的主键
------解决思路----------------------

;with acherat as
(
    select *,rownum=row_number() over (order by oldzh)
    from base
)

update a
set a.zh = ltrim(b.rownum+31010000)
from base a,acherat b
where a.oldzh = b.oldzh

------解决思路----------------------
WITH t AS (
    SELECT oldzh,
           ROW_NUMBER() OVER(ORDER BY oldzh) rn
      FROM base
)
UPDATE base
   SET zh = CONVERT(nvarchar(8), 31010000 + rn)
  FROM base, t
 WHERE t.oldzh = base.oldzh

其他的删主键、删字段、建主键自己补上。
  相关解决方案