我正在尝试找到一种优雅的方式来编写查询,该查询仅返回特定列所需的行数,总计至少为 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
但是据我所知,SQL 查询中的 LIMIT 子句无法限制 SUM 而不是行数。
我希望我可以说这样的话,但是可惜,这不是有效的 SQL:
SELECT *
FROM elements
LIMIT sum(count) > 50
此外,请牢记我的目标是以自动、高效的方式自动将此查询的结果插入到另一个表中,因此请不要建议使用电子表格或任何与 SQL 不兼容的内容。
谢谢
最佳答案
有很多方法可以做到这一点。一种是使用相关子查询
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
关于mysql - MySQL 中累积列的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27977741/