感觉你的表设置,不适合你的逻辑,所以你会卡在这里。
建议分开主表和明细,主表行记录 用户、充值数、余额数、折扣类型等等,每次充值,新建一行。
明细行记录 充值和消费明细,用主表行的主键做外键,更新相对应的余额
这样,每次取数据时,直接筛选 余额大于0的对应的用户的主表记录,按时间或主键排序,就可以了,剩下的计算应该不是问题。