将一列的行添加到每行的另一列中

时间:2018-10-25 08:07:47

标签: mysql

我正在尝试创建一个查询,该查询创建一列,以每行添加前一列的所有行值。我已经尝试了SUM和COUNT,但这并没有给我想要的结果。我该如何解决这个问题?

+----+------+-----+
| id |amount|total|
+----+------+-----+
| 1  | 10   | 10  |
| 2  | 20   | 30  |
| 3  | 15   | 45  |
| 4  | 30   | 75  |
+----+------+-----+

1 个答案:

答案 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