UPDATE EVALUATION e join
(select e.*,
(select sum(readamount)
FROM EVALUATION e2
where e2.userId = e.userId and e2.readday <= e.readamount
) as running_readamount
FROM EVALUATION e
) ee
on e.evaluationID = e2.evaluationID
set e.readamount = e2.running_readamount;
В результате выполнения следующих операторов MYSQL:
Сообщение об ошибке 'Неизвестный столбец' e2.evaluationID 'в' предложении '' . Что не так?
evaluationID | userID | readday | readamount
---------------------------------------------
1 | aaa | Day 1 | 20
---------------------------------------------
2 | bbb | Day 1 | 10
---------------------------------------------
3 | ccc | Day 1 | 30
---------------------------------------------
4 | aaa | Day 2 | 50
---------------------------------------------
5 | bbb | Day 2 | 30
---------------------------------------------
6 | ccc | Day 2 | 40
---------------------------------------------
Мы хотели бы изменить данные в этой форме следующим образом:
Я хочу, чтобы значение readmount накапливалось постепенно в соответствии со значением readday.
Для вашего сведения, моя MYSQL версия - 5,6.
evaluationID | userID | readday | readamount
---------------------------------------------
1 | aaa | Day 1 | 20
---------------------------------------------
2 | bbb | Day 1 | 10
---------------------------------------------
3 | ccc | Day 1 | 30
---------------------------------------------
4 | aaa | Day 2 | **70**
---------------------------------------------
5 | bbb | Day 2 | **40**
---------------------------------------------
6 | ccc | Day 2 | **70**
---------------------------------------------
※ TABLE name = EVALUATION
`evaluationID` INT(11) NOT NULL AUTO_INCREMENT,
`userID` VARCHAR(20) NULL DEFAULT NULL,
`readday` VARCHAR(20) NULL DEFAULT NULL,
`readamount` INT(11) NULL DEFAULT NULL