mysql - 用另一行的平均值更新一行

标签 mysql sql


我实际上有一个这样的表:
enter image description here
但是我想更新第一行的值,让它成为他们 child 的平均值,如下所示:
enter image description here
所以我使用了这个查询:

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/

相关文章:

Mysql错误: Not allowed to return a result set from a function

php - 使用 Datatables v1.10.0 进行服务器端处理

sql - 不同的 JOIN 类型能否给出相同的结果?

python - SQLalchemy 指定要使用的索引

sql - Oracle SQL - 将连续数字设置为范围

php - openshift mysql 数据库连接问题

mysql 5.6 修复复制

php - 在 PHP 中将日期添加到日期(从 MySQL 数据库中检索)

java - 如何在java spring boot中使用多个join sql查询

php - MySQL 设计说明