mysql - MySQL 中累积列的限制

标签 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

但是据我所知,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/

相关文章:

mysql - rake 中止! StandardError : An error has occurred, 所有后续迁移均已取消:

java - 尝试使用 Java 更新 SQL 表

mysql - SQL - ORDER BY ASC LIMIT 1 排除多个相同的结果 - 最好的方法?

mysql自定义函数在带有限制子句的select中调用

mysql - SQL根据某些列查找同一个表中的行

php - 如何在语句执行期间保持临时 mysqli 表在 php 中可用?

php - 如何查看所有团队成员的帖子

sql - Mysqldump 和 gzip 多个带有 where 子句的表在 PhPMyAdmin 中不起作用

更改列格式的 SQL 函数

android:AutoCompleteTextView 的字符串数组大小限制