【问题标题】:How to query result list from a table that sum(it's specific column value) equal an input value如何从总和(它的特定列值)等于输入值的表中查询结果列表
【发布时间】:2016-08-04 13:23:38
【问题描述】:

我有一张这样的桌子:

--------------------------------------
| 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 不够)

欢迎任何提示!

【问题讨论】:

  • 您的查询在哪里?

标签: mysql sql


【解决方案1】:

例如:

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多