我正在尝试创建一个查询,该查询创建一列,以每行添加前一列的所有行值。我已经尝试了SUM和COUNT,但这并没有给我想要的结果。我该如何解决这个问题?
+----+------+-----+
| id |amount|total|
+----+------+-----+
| 1 | 10 | 10 |
| 2 | 20 | 30 |
| 3 | 15 | 45 |
| 4 | 30 | 75 |
+----+------+-----+
答案 0 :(得分:2)
这是滚动汇总问题。在MySQL 8.0.2及更高版本中,您可以使用Window functions with Frames解决此问题。在较旧的版本中,我们可以使用用户定义的会话变量执行相同的操作。
尝试:
SELECT
dt.id,
dt.amount,
@tot := @tot + dt.amount AS total
FROM
(
SELECT
id,
amount
FROM your_table_name
ORDER BY id
) AS dt
CROSS JOIN (SELECT @tot := 0) AS user_init