在WHERE子句中使用mysql SUM()

假设我有这张桌子

id | cash 

1 200

2 301

3 101

4 700

我想返回第一行,其中所有先前现金的总和大于某个值:

因此,例如,如果我要返回第一行,其中所有先前现金的总和都大于500,则应返回到第3行

如何使用mysql语句" title="mysql语句">mysql语句执行此操作?

使用WHERE SUM(cash) > 500 不起作用

回答:

您只能在HAVING子句中使用聚合进行比较:

GROUP BY ...

HAVING SUM(cash) > 500

HAVING子句要求您定义GROUP BY子句。

要获得第一行,其中所有先前现金的总和都大于某个值,请使用:

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

由于聚合函数发生在子查询中,因此可以在WHERE子句中引用其别名。

以上是 在WHERE子句中使用mysql SUM() 的全部内容, 来源链接: utcz.com/qa/428792.html

回到顶部