我在名为“听证会”的表中有一个听证会列表,我想从Hearings_Users.UserID中的列表中更新Hearings.UserID值。听证会总是比听证用户多,因此我需要遍历用户列表并以循环方式重新开始,以便每个用户拥有大致相同的听证次数。
我只想一次更新1行。结果将只是Hearings表中的更新列表,其中每个记录都使用Hearings_Users表中的UserID更新。例如,如果有20个听证会和4个用户,则听证会中的每个UserID将更新为每行5行。如果举行19次听证会,则每次听证会数为5,5,5,4。
听证会
Hearings_Users
更新后所需的结果
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个。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。”