选择具有最多值(但仅超过一个)另一个值的记录?

时间:2010-12-15 21:15:55

标签: php sql mysql

我有......等数据。

 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美元的一部分。在程序的这一点上,我并不关心偏袒;我只是想以任何方式找出哪种质量。

2 个答案:

答案 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没有削减它吗?