如何查询和显示记录直到达到一定数量?
假设您要选择学生,直到学生的总金额达到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。
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看起来太多而又太慢时,一种替代方法是分步骤进行:首先使用“渐进和”构建一个临时表,然后使用该表来帮助您找到所需的限制。