SQL分组数据进⾏批量更新
数据库的⼈员表中只有岗位名称这个字段,所以需要增加⼀个岗位编码字段,但是因为数据量⼤,⽤case语句操作不合适,最后总结出⼀下操作:
1、在⼈员表中新建⼀个字段
ALTER TABLE HR_USER ADD JOBCODE VARCHAR(20)
2、根据岗位名称进⾏分组,使⽤游标进⾏批量更新
DECLARE @n int --定义⾃增变量
DECLARE @info varchar(200) --岗位名称
DECLARE userCursor CURSOR
FOR (SELECT  jobname FROM HR_USER GROUP BY jobname ) --查出岗位名称的集合放到游标中
OPEN userCursor
FETCH NEXT FROM userCursor into @info --读取第⼀⾏数据
Set @n = 1000 --岗位编码从1000开始⾃增批量更新sql语句
WHILE @@FETCH_STATUS = 0
BEGIN
SET @n = @n + 1
UPDATE HR_OA_HRMRESOURCE SET jobtcode = @n where jobtname = @info --根据当前的岗位名称更新岗位编码
FETCH NEXT FROM userCursor into @info --读取下⼀⾏数据
END
CLOSE userCursor
DEALLOCATE userCursor
GO