我有一个问题
UPDATE
users u
SET
amount = u.amount + b.sumwin
FROM
bonus b
WHERE
b.user_id = u.id AND
b.pay = 0 AND
b.autopay = 1 AND
b.sumwin > 0;
一个用户记录与许多奖金记录相关。我如何将 sumwin 从奖金添加到用户帐户?上面的查询没有做任何事情 oO
我有一个问题
UPDATE
users u
SET
amount = u.amount + b.sumwin
FROM
bonus b
WHERE
b.user_id = u.id AND
b.pay = 0 AND
b.autopay = 1 AND
b.sumwin > 0;
一个用户记录与许多奖金记录相关。我如何将 sumwin 从奖金添加到用户帐户?上面的查询没有做任何事情 oO
with cte as (
select b.user_id, sum(b.sumwin) as sumwin
from bonus as b
where
b.pay = 0 and
b.autopay = 1 and
b.sumwin > 0
group by b.user_id
)
update users as u set
amount = u.amount + b.sumwin
from cte as b
where b.user_id = u.id;
您的查询应该部分工作,即从任意一行添加 sumwin。从文档:
使用 FROM 时,应确保连接为要修改的每一行生成最多一个输出行。换句话说,目标行不应连接到来自其他表的多个行。如果是这样,那么只有一个连接行将用于更新目标行,但将使用哪一个是不容易预测的。