Mysql 如何将每行的变量值设置为零
表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,81Mysql 如何将每行的变量值设置为零,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
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;