Sử dụng truy vấn tương quan:
SELECT t.id,
t.count,
(SELECT SUM(x.count)
FROM TABLE x
WHERE x.id <= t.id) AS cumulative_sum
FROM TABLE t
ORDER BY t.id
Sử dụng các biến MySQL:
SELECT t.id,
t.count,
@running_total := @running_total + t.count AS cumulative_sum
FROM TABLE t
JOIN (SELECT @running_total := 0) r
ORDER BY t.id
Lưu ý:
-
JOIN (SELECT @running_total := 0) r
là một phép nối chéo và cho phép khai báo biến mà không yêu cầuSET
riêng biệt yêu cầu. - Bí danh của bảng,
r
, được MySQL yêu cầu đối với bất kỳ truy vấn con / bảng dẫn xuất / chế độ xem nội tuyến nào
Lưu ý:
- MySQL cụ thể; không di động đến các cơ sở dữ liệu khác
-
ORDER BY
là quan trọng; nó đảm bảo thứ tự khớp với OP và có thể có ý nghĩa lớn hơn đối với việc sử dụng biến phức tạp hơn (chức năng IE:psuedo ROW_NUMBER / RANK, mà MySQL thiếu)