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。太好了,就是这样。谢谢您。