Вы должны добавить столбец с @col: = 0 перед вычислением
Схема (MySQL v8.0)
CREATE TABLE table_1 (
`id` INTEGER,
`col_1` INTEGER,
`col_2` INTEGER
);
INSERT INTO table_1
(`id`, `col_1`, `col_2`)
VALUES
('1', '10', '6'),
('2', '3', '21'),
('3', '44', '3'),
('4', '24', '17'),
('5', '39', '42');
Запрос # 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 |
Просмотр на БД Fiddle
Почему мой ответ работает MySQL фактически зацикливается на строке номер 1, а затем начинается с левого столбца в операторе выбора направо.
Чтобы порядок столбцов определял, что находится в пользовательской переменной.
С этой функцией вы можете создавать очень классные алгоритмы.