Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将每行的变量值设置为零_Mysql_Variables - Fatal编程技术网

Mysql 如何将每行的变量值设置为零

Mysql 如何将每行的变量值设置为零,mysql,variables,Mysql,Variables,表1的数据为文本: id,第1列,第2列 1,10,6 2,3,21 3,44,3 4,24,17 5,39,42 主键:id 数据库版本:8.0.19 我需要您的帮助,将变量@col value设置为每行零,以便最终结果为: id,c1,c2 1,10,16 2,3,24 3,44,47 4,24,41 5,39,81 SET @col := 0; SELECT id, (@col := @col + col_1) AS c1, (@col := @col + col_2) AS c2 FRO

表1的数据为文本:

id,第1列,第2列

1,10,6

2,3,21

3,44,3

4,24,17

5,39,42

主键:id

数据库版本:8.0.19

我需要您的帮助,将变量@col value设置为每行零,以便最终结果为:

id,c1,c2

1,10,16

2,3,24

3,44,47

4,24,41

5,39,81

SET @col := 0;
SELECT id, (@col := @col + col_1) AS c1, (@col := @col + col_2) AS c2 FROM table_1 ORDER BY id;

非常感谢。

您必须在计算前添加一列@col:=0

模式(MySQL v8.0)


查询#1

SET @col := 0;
没有要显示的结果


查询#2

SELECT id,@col := 0, (@col := @col + col_1) AS c1, (@col := @col + col_2) AS c2 FROM table_1 ORDER BY id;

| id  | @col := 0 | c1  | c2  |
| --- | --------- | --- | --- |
| 1   | 0         | 10  | 16  |
| 2   | 0         | 3   | 24  |
| 3   | 0         | 44  | 47  |
| 4   | 0         | 24  | 41  |
| 5   | 0         | 39  | 81  |

为什么我的答案有效 MySQL实际上是从第1行开始循环,然后从select语句的左栏开始循环到右栏

因此,列的顺序决定了用户定义变量中的内容


您可以使用该功能构建非常酷的算法。

无需声明变量即可实现输出。 试试这个:

SELECT id, col_1 AS c1, (col_1+ col_2) AS c2 FROM table_1 ORDER BY id;
您将获得所需的输出


在MySql中,仅当需要从其他位置/行拾取数据时,才需要变量。对于当前行操作,所有列值都可以直接用于执行与该行相关的任何操作。

我不知道为什么需要变量c1=col1和c2=col1+col2除非这是变量的家庭作业,否则问题太复杂了。事情就这么简单:谢谢你对我问题的回答。在这种情况下,我真的需要使用一个变量。否则,我肯定会运行此代码。
SELECT id, col_1 AS c1, (col_1+ col_2) AS c2 FROM table_1 ORDER BY id;