在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