限制MySQL中的累积列

时间:2015-01-16 05:19:44

标签: mysql sql limit

我试图找到一种优雅的方式来编写一个查询,该查询只能为某个列返回足够的行,最多可以添加到n。

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

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

然后查询应返回:

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

因为计数列加起来n> 50.(确切地说,62)

必须从最小的id开始连续返回结果。

我看了一下累积器,就像在这一个:MySQL select "accumulated" column

但是AFAIK,无法在SUM查询限制中使用LIMIT子句而不是行计数。

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

SELECT *
FROM elements
LIMIT sum(count) > 50

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

由于

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。一种是使用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