gpt4 book ai didi

在同一个表中使用 SUM 的 MySql UPDATE

转载 作者:可可西里 更新时间:2023-11-01 06:40:40 24 4
gpt4 key购买 nike

我正在使用具有以下结构的表(结果)(别问,我没有构建它)

id | record_type | user_id | answer_id | choice | score | total |    email
-------------------------------------------------------------------------------
1 email xxxxxxx 0 userX@site.com
2 answer xxxxxxx aaaaaa A 0
3 answer xxxxxxx bbbbbb A 0
4 answer xxxxxxx cccccc B 10
5 email yyyyyyy 0 userY@site.com
6 answer yyyyyyy aaaaaa A 0
7 answer yyyyyyy bbbbbb A 0
8 answer yyyyyyy cccccc A 0
9 email zzzzzzz 0 userZ@site.com
10 answer zzzzzzz aaaaaa A 0
11 answer zzzzzzz bbbbbb A 0
12 answer zzzzzzz cccccc B 10

这是一项调查,提交调查后,正确答案的分值会发生变化。我已经运行更新以将“正确”答案的得分值设置为 10,现在我需要使用 record_type: email 更新行的总数,以便我们联系获胜者。

目标是将第 1,5 行和第 9 行的总列设置为 10,0 和 10

我在想这样的事

UPDATE results SET total = SUM(score) 
FROM results GROUP BY user_id WHERE user_id = user_id

但这看起来不对,我担心我可能走错了路。

最佳答案

UPDATE 
results AS r
JOIN
( SELECT user_id,
SUM(score) AS sum_score
FROM results
WHERE record_type = 'answer'
GROUP BY user_id
) AS grp
ON
grp.user_id = r.user_id
SET
r.total = grp.sum_score
WHERE
r.record_type = 'email';

关于效率,(record_type, user_id, score) 上的索引将有助于有效地计算派生表和自连接。

关于在同一个表中使用 SUM 的 MySql UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15013642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com