如何 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
个值。
我收到一个错误
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
个值。