You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何查询qty累计总和不超过10的所有数据行

MySQL累加值筛选查询写法

你之前的写法不生效是因为SUM()属于聚合函数,无法直接在WHERE子句中使用,需要先计算出每行的累积求和结果再做筛选,不同MySQL版本对应写法如下:

MySQL 8.0+ 版本(窗口函数实现)

WITH cumulative_calc AS (
    SELECT 
        uid,
        code,
        qty,
        -- 按uid升序累加qty,如需其他排序规则可修改ORDER BY后的字段
        SUM(qty) OVER (ORDER BY uid ASC) AS cumulative_total
    FROM 你的表名
)
SELECT uid, code, qty
FROM cumulative_calc
-- 若需要累加超过阈值时仍保留触发超限的那行,可替换为 WHERE cumulative_total - qty <= 10
WHERE cumulative_total <= 10;

针对你的样例数据:严格累加值≤10只会返回uid=1的行,如果要符合你预期返回前两行的需求,替换注释中提到的筛选条件即可,此时逻辑为「累加至当前行之前的总和≤10就保留该行」。

MySQL 5.x 及更早版本(用户变量实现)

SELECT uid, code, qty
FROM (
    SELECT 
        uid,
        code,
        qty,
        @total := @total + qty AS cumulative_total
    FROM 你的表名, (SELECT @total := 0) AS init_var
    ORDER BY uid ASC
) AS temp_calc
-- 同上面的逻辑,要返回前两行就替换为 WHERE cumulative_total - qty <= 10
WHERE cumulative_total <= 10;

内容的提问来源于stack exchange,提问作者Very Arditya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:24:05