我想获取表中的所有记录,直到某一列的总和小于或等于“n”。
例如:
表:数据
slno项目价格
1项1000
2第2项2000
3项目3 3000
4项目4 4000
5项目5 5000
6第6 6000项
我想从上表中获取所有记录,直到总和(价格)小于或等于10000
所以,根据上表,我的结果将是前4个记录。

最佳答案

你可以的

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演示

10-08 01:48