在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 中消失了

SCTF2018-Event easiest web - phpmyadmin

phpMyAdmin 表与 MySQL 视图

在 MySQL 中显示 phpMyAdmin 数据库

在 mysql/phpmyadmin 中上传和显示图像

无法在 PHPMYADMIN 上创建此 MYSQL 触发器