我尝试完成这样的事情:
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.
如何在SET行中不使用AVG来解决此问题?
您可以通过
在子查询中执行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
我认为您可以使用子查询来解决此问题。喜欢这个:
UPDATE Users
SET totalPayed =
(
SELECT AVG(p.paymentMade)
FROM Payments p
WHERE Users.username = p.username;
)
问题是,如果您使用的是JOIN
那么对于没有付款的用户,您将不会设置值