【问题标题】:How to return multi-rows from an update in a sub-query?如何从子查询中的更新中返回多行?
【发布时间】:2020-11-26 17:35:12
【问题描述】:

我收到一个错误

子查询返回超过 1 个值

我想使用我的子查询向多行返回多个值。我认为使用TOP 1 不会是解决方案,因为这些值都是一样的。我应该如何修改我的代码以返回我的 sum 函数的多个值?

这是我的代码:

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)

【问题讨论】:

    标签: sql sql-server sum subquery return-value


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢。我没有注意到我需要使用相关子查询。我学到了很多东西,而且是 SQL Server 的新手。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多