gpt4 book ai didi

php - 如何在 MySQL 中编辑不同的数值?

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

我将某种用户操作 X 存储在我的数据库中。如果用户执行另一个操作 Y,则字段“New_actions”计数为 1。例如:

User does action X at 19:07
User does action Y at 19:08
User does action Y at 19:08
User does action X at 19:10
User does action Y at 19:12

现在我的数据库中有下一个值:

X_actions --- Time --- New_actions
Name1 - 19:07 - 3
Name2 - 19:10 - 1

这意味着操作 Y 在 Name1 之后执行了两次,在 Name2 之后执行了一次。我希望你能理解我。但我对此有疑问。每小时应删除 2 个 Action 。第一次应该没有问题:Name1 中的“New_actions”字段应编辑为 1,但我如何制作一个脚本,第二次应将 Name1 编辑为 0,Name2 也应编辑为 0?

最佳答案

SET @remove := 2;

UPDATE my_table
SET New_actions =
IF( New_actions >= @remove,
(@remove := 0) + New_actions - @remove,
IF(@remove := @remove - New_actions, 0, 0) )
WHERE New_actions <> 0
ORDER BY my_table.Time;

使用了一个 INT Time 列来简化事情,这里是执行上面 block 3 次的结果:

+------+-------------+
| Time | New_actions |
+------+-------------+
| 1 | 3 |
| 2 | 3 |
| 3 | 3 |
+------+-------------+
+------+-------------+
| 1 | 1 |
| 2 | 3 |
| 3 | 3 |
+------+-------------+
+------+-------------+
| 1 | 0 |
| 2 | 2 |
| 3 | 3 |
+------+-------------+
+------+-------------+
| 1 | 0 |
| 2 | 0 |
| 3 | 3 |
+------+-------------+

关于php - 如何在 MySQL 中编辑不同的数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7418060/

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