在while循环中更新记录

时间:2019-09-13 16:03:30

标签: sql sql-server-2012

我在名为“听证会”的表中有一个听证会列表,我想从Hearings_Users.UserID中的列表中更新Hearings.UserID值。听证会总是比听证用户多,因此我需要遍历用户列表并以循环方式重新开始,以便每个用户拥有大致相同的听证次数。

我只想一次更新1行。结果将只是Hearings表中的更新列表,其中每个记录都使用Hearings_Users表中的UserID更新。例如,如果有20个听证会和4个用户,则听证会中的每个UserID将更新为每行5行。如果举行19次听证会,则每次听证会数为5,5,5,4。

听证会

enter image description here

Hearings_Users

enter image description here

更新后所需的结果

enter image description here

    WHILE EXISTS(SELECT TOP 1 Hearings_CaseID
                 FROM Hearings
                 WHERE UserID IS NULL)
          UPDATE Hearings
          SET UserID = (SELECT UserID
                        FROM Hearings_Users
                        WHERE Active = 1) 

这将产生一个无限循环,仅UPDATE子句会产生 “子查询返回的值不止1个。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。”

0 个答案:

没有答案