在phpmyadmin EVENT创建mysql中的每个
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在phpmyadmin EVENT创建mysql中的每个相关的知识,希望对你有一定的参考价值。
这是我的问题:
我想改进我的数据库上的一个事件,给每个玩家1分。
这很棒,但我想按比例进行,以便20000的玩家获得0分,10000的玩家比0的玩家少50%。
该公式已经制定。
所有我需要的是每个人,我不能这样做,因为我不习惯phpmyadmin中的事件。
[...]是我需要帮助的部分。
它是 :
[FOR EACH ROW in player SET @id = playerid]
SET @points = SELECT points FROM player WHERE playerid = @id
IF ( @points * 100 / 20000 > 100 )
THEN
SET @earn = 0
ELSE
SET @pourcent = @points * 100 / 20000
SET @pourcentmanque = 100 - @pourcent
SET @earn = @pourcentmanque * 20 / 30
END
UPDATE player SET points = points + @earn WHERE playerid = @id
[END FOR]
感谢您阅读我并尝试提供帮助。
答案
您可以一次将UPDATE应用于多行。
Shadow的评论建议使用case
表达式。这是它的外观:
UPDATE player
SET points = points +
CASE
WHEN points * 100 / 20000 > 100
THEN 0
ELSE (100 - (points * 100 / 2000)) * 20 / 30
END;
请注意,特定的playerid没有WHERE子句。这意味着UPDATE将应用于所有playerid。该表达式将使用每个相应玩家的当前points
来计算要添加多少。
另一答案
我不认为你需要一个循环,只需在更新语句中使用case
表达式而不使用where子句:
update players set points = points + (case
when points*1/200>100 then 0
else (100 - (points * 1/200)) * 2 / 3
end)
我还从计算中删除了一些多余的零。
以上是关于在phpmyadmin EVENT创建mysql中的每个的主要内容,如果未能解决你的问题,请参考以下文章
重新登录到 phpmyadmin 后,存储过程在 mysql 中消失了