MySQL 中的累积列限制

Limit On Accumulated Column in MySQL

我正在尝试寻找一种优雅的方式来编写查询,该查询仅 returns 足够的行供特定列加起来至少 n。

例如,假设 n 为 50,table 行如下所示:

id   count
1    12
2    13
3    5
4    18
5    14
6    21
7    13

那么查询应该return:

id   count
1    12
2    13
3    5
4    18
5    14

因为计数列加起来 n > 50。(准确地说是 62)

必须return结果从最小的id开始连续

我研究了一些累加器,比如这个:MySQL select "accumulated" column

但是 AFAIK,没有办法在 SUM 的 SQL 查询限制中使用 LIMIT 子句而不是行计数。

希望我可以这样说,但是唉,这是无效的SQL:

SELECT *
FROM elements
LIMIT sum(count) > 50

此外,请记住我的目标是将此查询的结果以自动化、高效的方式自动插入到另一个 table 中,因此请不要建议使用电子表格或任何不是SQL 兼容。

谢谢

有很多方法可以做到这一点。一种是使用 Correlated Subquery

SELECT id,
       count
FROM   (SELECT *,
               (SELECT Isnull(Sum(count), 0)
                FROM   yourtable b
                WHERE  b.id < a.id) AS Run_tot
        FROM   yourtable  a) ou
WHERE  Run_tot < 50