如何 return 从子查询的更新中获取多行?

How to return multi-rows from an update in a sub-query?

我收到一个错误

Subquery returned more than 1 value

我想使用我的子查询 return 多个值到多行。我认为使用 TOP 1 不会是解决方案,因为值将完全相同。我应该如何修改我的代码才能 return 我的求和函数的多个值?

这是我的代码:

UPDATE statistic 
SET Autumn_Credits = (SELECT SUM (modules.Module_Credits)
                      FROM student
                      INNER JOIN course ON student.CourseID = course.CourseID
                      INNER JOIN department ON course.DeptID = department.DeptID
                      INNER JOIN Modules ON department.DeptID = Modules.deptID
                      INNER JOIN Mark ON Modules.ModuleID = Mark.ModuleID 
                                      AND student.SID = Mark.SID
                      WHERE Modules.Session = 'Autumn UK'
                      GROUP BY Student.StudentID, student.Academic_Year)

大概你想要一个相关的子查询。假设您在 statistic 中每 student/academic 年有一行:

update statistic
    set Autumn_Credits = (Select sum(modules.Module_Credits)
                          . . .
     
                          where statistic.StudentId = Student.StudentID and
                                statistic.Academic_Year = student.Academic_Year
                         )

请注意,这会更新 statistic 中的 所有 行。如果行与子查询不匹配,它们将获得 NULL 个值。