我有......等数据。
ID | Amount
-----------------
1 | 50.00
2 | 40.00
3 | 15.35
4 | 70.50
等。我有一个值,我正在努力,在这种情况下,让我们说100.00。我希望按照ID的顺序获取最多100.00的所有记录。而且我想要抓住一个以上,因为我想把它填满我想要的价值。
也就是说,在这个例子中,我希望获得记录1,2和3.前两个总计最多为90.00,而3个总数超过100.00。所以我想要一个查询来为我做这件事。 MySQL中是否存在这样的事情,或者我将不得不求助于PHP数组循环?
修改: 用英语表示:假设他们的账户里有100美元。我想知道他们的哪些请求可以付费,无论是全部还是部分。所以我可以支付50美元和40美元,以及15.35美元的一部分。在程序的这一点上,我并不关心偏袒;我只是想以任何方式找出哪种质量。
答案 0 :(得分:4)
是的,是可能的
set @total:=0;
select * from
(
select *, if(@total>100, 0, 1) as included, @total:=@total+Amount
from your_table
order by id
) as alls
where included=1
order by id;
答案 1 :(得分:0)
参考最后一句话:mysql sum
没有削减它吗?