Mysql使用单个查询逐步更新行

时间:2012-03-22 14:30:48

标签: mysql

我有一个“reward_points”表,其结构类似于'id','user_id','points','datetime_gained'。

每个user_id可以有多行,每行都有一定数量的奖励积分。他们可以花费的点的总价值是所有行的总和(由他们的user_id引用。

当用户花费积分时,我需要从最早的积分中扣除积分(使用日期time_gained字段)并逐步使用下一个最旧积分,直到他们刚刚花费的所有积分都已分配。

这在脚本语言中显然是微不足道的,但是我想尝试使用纯MySQL来完成它吗?

1 个答案:

答案 0 :(得分:3)

考虑到当前的事务风格结构,不是实际减去点,而是插入具有负点值的新行不是更好吗?然后SUM将为您提供新的扣除余额。

通过直接从原始行中扣除,实际上使这些数据无效。如果用户在3/1获得5分,然后今天花了2分,数据库现在说用户在3/1获得了3分(这是不正确的)。添加新行将显示用户在3/1获得5分,然后今天失去2分。