gpt4 book ai didi

php - MySQL - 如果两个加数相同,则增加总和值

转载 作者:行者123 更新时间:2023-11-30 01:18:59 25 4
gpt4 key购买 nike

在简单的 MySQL 更新语法上苦苦挣扎了几个小时。 votesum列是vote1+vote2列的总和。如果有多个 votesum 值彼此相等(20 和 20,如下面的示例),我需要将 votesum 增加1 表示具有较高 vote1 值的行。

表格:

id|vote1|vote2|votesum
1|10 |10 |20
2|5 |15 |20
3|2 |2 |4
4|1 |1 |2

我正在寻找的MySQL更新语法应该检查votesum的最大数量是否是单独的,或者有更多相等的投票和值。如果有两个(或更多),那么我需要增加 votesum 的值。

因此更新后的表格应如下所示:

id|vote1|vote2|votesum
1|10 |10 |21
2|5 |15 |20
3|2 |2 |4
4|1 |1 |2
5|0 |2 |2

请记住,votesum 的最高值是我需要更新的值。在上面的示例中,id=1id=2 不能相等,但 id=4id=5 code> 可以相等,因为我不注意那些不是最高值的 votesum 值。

最佳答案

以下查询使用变量来计算增量值:

    select t.*,
@inc := if(@votesum = votesum, @inc + 1 , 0) as inc,
@votesum := votesum
from t cross join
(select @votesum := -1, @inc := 0) const
order by votesum desc, vote1 asc;

这可以在 update 语句中使用 join:

update t join
(select t.*,
@inc := if(@votesum = votesum, @inc + 1 , 0) as inc,
@votesum := votesum
from t cross join
(select @votesum := -1, @inc := 0) const
order by votesum desc, vote1 asc
) inc
on t.id = inc.id and inc.inc > 0
update t.votesum = t.votesum + inc.inc;

关于php - MySQL - 如果两个加数相同,则增加总和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18767212/

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