使用平均列更新记录

Oli*_*ski 1 mysql sql sql-update

我想找到status = 0的列的平均值,并将其更新到该表中的另一条记录中.这是我试图使用的查询.

UPDATE mc25778 set balance=(AVG(balance WHERE status=0)) WHERE username="Average"
Run Code Online (Sandbox Code Playgroud)

尝试执行此任务时出现此错误:

   Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE status=0)) WHERE username="Average"' at line 1
Run Code Online (Sandbox Code Playgroud)

我有什么想法可以解决这个问题吗?

谢谢!

Joh*_*Woo 6

您可以使用子查询加入表,该子查询分别计算每个用户名的平均值,

UPDATE  mc25778 a
        INNER JOIN 
        (
            SELECT  username, AVG(balance) avg_bal
            FROM    mc25778 
            WHERE   status = 0
            GROUP   BY username
        ) b ON a.username = b.username
SET     a.balance = b.avg_bal
WHERE   a.username = 'Average'
Run Code Online (Sandbox Code Playgroud)

更新1

看起来您想要计算所有记录的总平均值,status = 0并且其结果将在记录中更新Average

UPDATE  mc25778 a
        CROSS JOIN
        (
            SELECT  AVG(balance) avg_bal 
            FROM    mc25778 
            WHERE   status = 0
        )  b
SET     a.balance = b.avg_bal
WHERE   a.username = 'Average'
Run Code Online (Sandbox Code Playgroud)