我有3个具有以下结构的表:

表用户


ID
名称
点数


表组


ID
名称
group_score


表UsersGroups(关联表)


用户身份
群组编号


我试图为所有组简单地通过添加组内用户的所有点来计算group_score。

我尝试了以下查询

UPDATE `Group` SET group_score = (SELECT SUM(User.points) FROM User
                                    JOIN UsersGroups
                                    ON User.id = UsersGroups.UserId
                                    GROUP BY UsersGroups.GroupId)


这给了我OperationalError(“子查询返回多于1行”)

我究竟做错了什么?

谢谢您的帮助!

最佳答案

UPDATE `Group` JOIN (SELECT GroupId, SUM(User.points) as sumuser FROM User
                                    JOIN UsersGroups
                                    ON User.id = UsersGroups.UserId
                                    GROUP BY UsersGroups.GroupId) x
ON `Group`.Id=x.GroupId
SET group_score =x.sumuser

关于mysql - 使用连接进行更新的MySQL语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25763420/

10-16 14:56