SQL Server2008数据库已存在两张表设备表
Device和SIM卡表Sim,
Device表中有99900条数据,deviceId分两批连续:
DeviceId BETWEEN 37251413 AND 37252912 (总数1500)
DeviceId BETWEEN 71659789 AND 71758188(总数98400)
Sim表中有100000条数据,Sim卡连续:
SimId BETWEEN 14423 AND 114421 (总数10w)
Device表和Sim表无相同字段,现在需要将99900条Sim表的SimId字段的值写入
Device表的SimId表中,不能出现重复取值的情况
方法如下
declare @DeviceId int, --定义一个变量
@SID int; --定义一个变量
declare my_cursor cursor scroll dynamic --scroll表示可以向前或向后移动 dynamic:表示可写也可读,
for
select d.DeviceId from Device d where d.DeviceId BETWEEN 37251413 AND 37252912
open my_cursor --打开游标
fetch next from my_cursor into @DeviceId --游标停在第一条记录前面,第一次执行,测试有没有记录存在
while(@@fetch_status=0) --取数据,直到-2即没有记录
begin
select TOP 1 @SID =SimId FROM Sim s where s.SimId not in (select d.SimId from Device d where d.simid is not null) and SimId>14422
update [Device] set SimId = @SID where DeviceId = @DeviceId
fetch next from my_cursor into @DeviceId
end
close my_cursor
deallocate my_cursor
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30146086/viewspace-1467524/
,如需转载,请注明出处,否则将追究法律责任。