2012-03-22 18 views
2

我有一個類似於'id','user_id','points','datetime_gained'結構的「reward_points」表。Mysql逐步更新單個查詢的行

每個user_id可以有多個行,每個行都有一定數量的獎勵點數。他們可以花費的積分總值是所有行的總和(由他們的user_id引用)

當用戶花費積分時,我需要從總數中扣除積分,從最老的開始(使用日期time_gained字段),並逐漸使用下一個最老的,直到他們剛剛花費的所有點都被分配了。

這在腳本語言中顯然是非常微不足道的,但我試圖解決它是否可以完成使用純粹的MySQL?

回答

3

而不是實際減去點,考慮到你的當前事務風格的結構是不是更好地插入帶有負值點的新行?然後一個SUM會給你新的扣除餘額。

通過從原始行中扣除直線,實際上使數據無效。如果用戶在3/1上獲得5分,然後今天花了2分,數據庫現在說用戶在3/1上獲得3分(這是不正確的)。添加新行將顯示用戶在3/1上獲得5分,然後今天丟失2分。

+1

這與我的想法完全一樣..你太快了:) – DonCallisto 2012-03-22 14:42:18

+0

感謝您的快速響應。你的建議可能是更好的方法。 – Alistair 2012-03-22 15:30:24