如何根据特定累积金额从表格中选择多个项目?

时间:2015-06-06 09:25:18

标签: mysql mysqli

我有一个餐桌名称"食物",有各种不同卡路里的食物。例如:吼叫:

表:食物

id    name      calories
-----------------------
1     beef      200
2     tomato    400
3     carrot    500
4     nuts      800

我想要的:当卡路里的总和达到一定量时,我想根据卡路里量选择表中的多种食物,我想停止查询并回显结果。例如,当我想要600卡路里时,结果将显示前两个食物200 + 400 = 600。当我想要卡路里限制将是1000,它将需要任何两个或更多的食物,那些卡路里量达到1000或接近1000。 我尝试使用以下代码来制作它;但它不起作用。

"SELECT * FROM foods WHERE SUM(calories)=1000 "

我感谢专家的帮助

1 个答案:

答案 0 :(得分:1)

您可以使用变量来计算累积总和:

SELECT id, name, calories
FROM (
   SELECT id, name, calories,
          @cumSum:= @cumSum + calories AS cumSum
   FROM foods, (SELECT @cumSum:=0) var
   ORDER BY id ) t
WHERE cumSum <= 600   

子查询计算累积总和并将其值存储在@cumSum变量中。然后,外部查询可以使用计算列cumSum来过滤掉累积总和大于600的结果。

<强>输出:

id  name    calories
----------------------
1   beef    200
2   tomato  400

Fiddle Demo here