我想获取表中的所有记录,直到特定列的总和小于或等于'n'。
例如:
表:数据
slno item price 1 item1 1000 2 item2 2000 3 item3 3000 4 item4 4000 5 item5 5000 6 item6 6000
我想从上表中获取所有记录,直到总和(价格)小于或等于10000
因此,使用上表我的结果将是前4个记录。
答案 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 演示