有这个表格
#table stock
+-------+----------+
| id | stock |
+-------+----------+
| 1 | 20 |
+-------+----------+
| 2 | 25 |
+-------+----------+
| 3 | 10 |
+-------+----------+
| 4 | 20 |
+-------+----------+
#note: this is an arbitrary random data
如何从表中选择行,直到 stock
列的 sum()
达到某个值或稍微高一些,并按照 id ASC
的顺序排序。
例如,我想选择表中的行,直到库存总量达到'50',所以结果将是
#result 3 rows
+-------+----------+
| id | stock |
+-------+----------+
| 1 | 20 |
+-------+----------+
| 2 | 25 |
+-------+----------+
| 3 | 10 |
+-------+----------+
现在库存总量为“55”,这是比“50”更接近的最高值。如果我们取下一行
id:4
,则库存总量将高于50;如果我们删除行id:3
,则值将为45,小于我想要的50。我可以通过选择所有行并循环它们来使用PHP实现这一点,但我认为这将是浪费的。是否有可能以较低的级别完成,并让mysql通过一个
sql
查询为我完成?
谢谢你,如果我弄错了什么,请原谅,我是编程新手。
"from t cross join (select @sum := 0) params order by id"
,语法错误已经消失。这样做是否会给我带来相同的正确结果? - Accountant م