除了"累积"专栏之外,我不确定该怎么称呼它.
我有一个MySQL表,看起来像一个列
+---+
|val|
+---+
| 1 |
| 4 |
| 6 |
| 3 |
| 2 |
| 5 |
+---+
Run Code Online (Sandbox Code Playgroud)
我想进行一个查询,以便我将此列与另一列一起获取,该列是到目前为止此列中所有行的总和.换句话说,选择会产生
+---+----+
|val| sum|
+---+----+
| 1 | 1 |
| 4 | 5 |
| 6 | 11 |
| 3 | 14 |
| 2 | 16 |
| 5 | 21 |
+---+----+
Run Code Online (Sandbox Code Playgroud)
有谁知道我会怎么做,以及你是否可以在MySQL中这样做?
关于什么
set @running_sum=0
select val, @running_sum:=@running_sum + val from your_table;
Run Code Online (Sandbox Code Playgroud)
我是mysql的新手,所以我带着一点点的话说.
你想要的是一个运行总和.有一些谷歌的结果.
小智 5
另一种变化(单行)可以
SELECT val, @sm := @sm + val AS sum
FROM myTable, (SELECT @sm := 0) r;
Run Code Online (Sandbox Code Playgroud)
如果您不想使用变量,可以使用嵌套选择,但请注意,此查询具有更高的复杂性(性能较低),您必须设置并锚定排序,在我的示例中,我使用_rowid,但任何其他字段都可以完成工作
SELECT x1.val, (SELECT sum(val)
FROM myTable
WHERE id <= x1._rowid)
AS sum
FROM myTable AS x1
ORDER BY _rowid;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5112 次 |
| 最近记录: |