Sql 将表1中的平均值插入表2中

Sql 将表1中的平均值插入表2中,sql,sql-server,Sql,Sql Server,我试着完成这样的事情: UPDATE Users SET totalPayed = AVG(p.paymentMade) FROM Payments p WHERE Users.username = p.username; 错误消息: An aggregate may not appear in the set list of an UPDATE statement. 如果不在设置行中使用AVG,我如何解决此问题?我认为可以使用子查询解决此问题。像这样: UPDATE Users SET t

我试着完成这样的事情:

UPDATE Users
SET totalPayed = AVG(p.paymentMade)
FROM Payments p
WHERE Users.username = p.username;
错误消息:

An aggregate may not appear in the set list of an UPDATE statement.

如果不在设置行中使用AVG,我如何解决此问题?

我认为可以使用子查询解决此问题。像这样:

UPDATE Users
SET totalPayed = 
(
    SELECT AVG(p.paymentMade) 
    FROM Payments p
    WHERE Users.username = p.username;
)

问题是,如果您使用的是
JOIN
,那么对于没有付款的用户,您将不会设置值

,您可以通过在子查询中执行
avg
并使用
username
将其连接到主表,然后更新
totalpayed
来实现

UPDATE U
  SET totalPayed=p.avg_payment
FROM Users U
INNER JOIN 
( SELECT username,AVG(p.paymentMade) avg_payment
  FROM Payments 
  GROUP BY username ) P ON U.username =p.username 

您使用的是哪个数据库(例如MySQL、SQL Server等)?您使用的是什么RDM?mysql、oracel、mssql?很抱歉错过了:mssql。太好了,就是这样。谢谢您。