如何从总和(它的特定列值)等于输入值的表中查询结果列表

时间:2016-08-04 13:23:38

标签: mysql sql

我有一张像这样的表:

--------------------------------------
| ID  |  AMOUNT | MIN_AMOUNT | TIME  |
--------------------------------------
|  1  |  100.00 |   100.00   | TIME1 |
|  2  |  200.00 |   100.00   | TIME2 |
|  3  |  200.00 |   100.00   | TIME3 |
--------------------------------------

我需要从这个表中查询AMOUNT的总和(如果最后一个金额介于MIN_AMOUNT和AMOUNT之间,可以使用MIN_AMOUNT)等于输入值,请注意我已经按ID排序了优先级,例如:

  1. 如果输入为500.00,则结果为1,2,3
  2. 如果输入为400.00,结果也将是1,2,3(3将给出100.00)
  3. 如果输入为300.00,则结果为1,2
  4. 如果输入为200.00,结果将为2(1是不够的)
  5. 欢迎任何提示!

1 个答案:

答案 0 :(得分:0)

E.g:

SELECT a.* 
  FROM my_table a 
  JOIN 
     ( SELECT MIN(id) id 
         FROM 
            ( SELECT x.*
                   , @i:=@i+amount i 
                FROM my_table x
                   , (SELECT @i:=0) vars 
               ORDER  
                  BY x.id
            ) n 
        WHERE i >= 100
     ) b 
    ON b.id >= a.id;