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



我尝试完成这样的事情:

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那么对于没有付款的用户,您将不会设置值

最新更新