我实际上有一个这样的表:
但是我想更新第一行的值,让它成为他们 child 的平均值,如下所示:
所以我使用了这个查询:
UPDATE mytable parent
INNER JOIN mytable child
ON child.parentId = parent.id
SET parent.value = AVG(child.value)
WHERE parent.parentId=0
但我收到此错误:#1111 - 组函数的使用无效
如何更正我的查询?
最佳答案
使用子查询加入计算父 ID 平均值的位置
获取每个 parentId 的平均值的查询如下所示:
SELECT parentId, AVG(value) as average FROM mytable GROUP BY parentId
现在加入吧
UPDATE mytable parent
INNER JOIN (SELECT parentId, AVG(value) as average FROM mytable GROUP BY parentId) child
ON child.parentId = parent.id
SET parent.value = child.average
WHERE parent.parentId=0
关于mysql - 用另一行的平均值更新一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36836441/