T-SQL怎么游标下移呢

来源:百度知道 编辑:UC知道 时间:2024/05/31 21:51:16
请教!!
我想在删除时某一行时自动更新编号列,就是全部置空然后重新累加
1,2,3,4这样。
但是。。
----------------------
select count(falseID) from doctor

declare @i int
set @i=1
while(11)//上面求出的总行数
begin
update doctor set falseID=@i where falseID=0
@i+1
end

哎 条件怎么弄啊。。。 SQL怎么控制游标的下移呢,这样的话 我就可以顺序更新了 不需要上移下移就行了

您是要重新编号,按什么顺序编呢?没说清楚。

假设您还按旧编号顺序排序吧:

1.一个语句即成:
update doctor set falseid=(select count(1) from doctor a where a.falseid <=doctor.id)

当然了,你要不想这么漂亮地解决问题,可以笨笨地使用游标

2.使用游标完成:
select FALSEID INTO #TMP from DOCTOR

declare CURSORNAME cursor for select FALSEID from #TMP ORDER BY FALSEID
DECLARE @FALSEID INT,@NEWID INT
SET @NEWID=1

open CURSORNAME
fetch next from CURSORNAME into @FALSEID
while @@fetch_status=0
begin
UPDATE DOCTOR SET FALSEID=@NEWID WHERE FALSEID=@FALSEID
SET @NEWID=@NEWID+1
fetch next from CURSORNAME into @FALSEID
end
close CURSORNAME
deallocate CURSORNAME

GO

@i=@i+1
你这里没有给好值!