查询以获取所有记录,直到列的总和小于或等于某个值

时间:2014-02-17 08:45:51

标签: mysql sql

我想获取表中的所有记录,直到特定列的总和小于或等于'n'。

例如:

表:数据

slno     item       price

1        item1      1000
2        item2      2000
3        item3      3000
4        item4      4000
5        item5      5000
6        item6      6000

我想从上表中获取所有记录,直到总和(价格)小于或等于10000

因此,使用上表我的结果将是前4个记录。

1 个答案:

答案 0 :(得分:2)

你可以做到

SELECT slno, item, price
  FROM
(
  SELECT slno, item, price, @t := @t + price total
    FROM table1 CROSS JOIN (SELECT @t := 0) i
   ORDER BY slno
) q
 WHERE total <= 10000

SELECT slno, item, price
  FROM
(
  SELECT slno, item, price, 
  (
    SELECT SUM(price)
      FROM table1
     WHERE slno <= t.slno
  ) total
    FROM table1 t
) q
 WHERE total <= 10000
 ORDER BY slno

这是 SQLFiddle 演示