我试图找到一种优雅的方式来编写一个查询,该查询只能为某个列返回足够的行,最多可以添加到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的建议
由于
答案 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