一尘不染

总和直到一定点-MySql

mysql

如何查询和显示记录直到达到一定数量?

假设您要选择学生,直到学生的总金额达到1000?

加成

 Student ID   Student Name   Student Money 
 ---------    -----------     --------------
   1           John            190
   2           Jenny           290
   3           Ben             200
   4           Andy            120
   5           Lynna           300

如果我想停在500,我会得到记录1和2(190 + 290)。如果我想停在1000,我会得到记录1直到4。


阅读 253

收藏
2020-05-17

共1个答案

一尘不染

SQL表没有“内部”顺序,因此您必须指定一些ORDER BY子句以赋予“直到”短语任何含义。鉴于此,可以使用来自学生ORDER BY xxx LIMIT
N的SELECT SUM(money)获得``前’‘N条记录的总和。使用具有自然顺序整数的辅助表INTS,可以找到最合适的最大值N通过类似以下内容:

SELECT MAX(N) FROM INTS
WHERE (SELECT SUM(money) FROM student ORDER BY xxx LIMIT N) < 1000

最后,将其作为整个SELECT中LIMIT子句的另一个嵌套SELECT插入。但是,所有这些气味似乎都相当低效!通常,当嵌套SELECT看起来太多而又太慢时,一种替代方法是分步骤进行:首先使用“渐进和”构建一个临时表,然后使用该表来帮助您找到所需的限制。

2020-05-17