SQL Server 2008
我有一个表,其中包含 2 个字段
TableA
alterid uniqueidentifier
revnum varchar(50)
另一个表具有与第一个表完全相同的字段
TableB
alterid uniqueidentifier
revnum varchar(50)
我想检查比较 revnum 字段。对于 TableA 的每条记录,我检查 TableB 中是否有记录。如果它存在并且 revnum 字段不同,我将 TableB.revnum 更新为 TebleA.revnum。如果它不存在,那么我将 TableA 中的记录添加到 TableB。
这是代码
BEGIN
SET @Prod_curs =CURSOR FOR SELECT s.alterid, s.revnum, r.revnum FROM TableA s LEFT OUTER JOIN
TableB r ON s.alterid=r.alterid
WHERE s.revnum<>r.revnum OR r.revnum IS NULL
OPEN @Prod_curs
FETCH NEXT FROM @Prod_curs INTO @alterid, @srevnum, @rrevnum
WHILE @@FETCH_STATUS=0
BEGIN
IF @rrevnum IS NULL
BEGIN
INSERT INTO TableB (alterid,revnum) VALUES (@alterid,ISNULL(@srevnum,0))
END
IF @srevnum<>@rrevnum
BEGIN
UPDATE TableB SET revnum=@srevnum WHERE alterid=@alterid
END
FETCH NEXT FROM @Prod_curs INTO @alterid, @srevnum, @rrevnum
END
CLOSE @Prod_curs;
DEALLOCATE @Prod_curs;
END
我的代码在一组大约 15000 条记录中运行良好,除了一些奇怪的事情发生的记录。
在 TableA 我有这条记录
alterid revnum
'A770B280-B4DA-4937-9046-B24E60259AB6' '2-414922-1--1-1-2-51-0'
当它存储在 TableB 中时,值是
alterid revnum
'BF18A0EB-A684-486B-B053-55BC2969F1E3' '2-414922-1--1-1-2-51-0'
出于某种原因,alterid 发生了变化,我不知道为什么。
有人可以帮忙吗