首页 > 数据库 > mysql教程 > 如何在MySQL中查询先前值之和超过阈值的行?

如何在MySQL中查询先前值之和超过阈值的行?

Susan Sarandon
发布: 2024-11-05 01:35:01
原创
441 人浏览过

How to Query for Rows Where the Sum of Previous Values Exceeds a Threshold in MySQL?

在 MySQL WHERE 子句中使用 SUM() 进行查询

使用 MySQL 表时,可能需要根据聚合计算检索行,例如先前值的总和。但是,直接在 WHERE 子句中使用 SUM() 可能不会产生预期结果。

假设您有一个包含“id”和“cash”列的表:

id | cash
1    200
2    301
3    101
4    700
登录后复制

要检索之前所有现金总和超过特定值(例如 500)的第一行,使用 WHERE SUM(cash) > 500 将无法按预期工作。

使用 HAVING 子句的解决方案

MySQL 允许在 HAVING 子句而不是 WHERE 子句中进行聚合比较。要获得所需的结果,您可以使用以下查询:

GROUP BY ...
HAVING SUM(cash) > 500
登录后复制

但是,这需要定义 GROUP BY 子句,这可能不是必需的。

使用嵌套带有运行总计的子查询

另一种方法是使用嵌套子查询来计算运行总计,然后将其与 WHERE 子句中的指定值进行比较:

SELECT y.id, y.cash
FROM (SELECT t.id,
             t.cash,
             (SELECT SUM(x.cash)
                FROM table x
               WHERE x.id <= t.id) AS running_total
        FROM table t
    ORDER BY t.id) y
WHERE y.running_total > 500
ORDER BY y.id
LIMIT 1
登录后复制

In在该查询中,子查询用于计算表中每一行的运行总计。别名 running_total 用于在 WHERE 子句中引用该值。添加 LIMIT 子句以仅返回符合条件的第一行。

这种方法允许直接比较 WHERE 子句中的聚合值,并产生所需的结果,而不需要 GROUP BY 子句。

以上是如何在MySQL中查询先前值之和超过阈值的行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板