Неизвестный столбец 'e2.evaluationID' в 'предложении' ОШИБКА - PullRequest
0 голосов
/ 02 мая 2020
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

Ответы [ 2 ]

0 голосов
/ 02 мая 2020


Привет,

Пожалуйста, попробуйте ниже запрос.

update EVALUATION  set readamount = qry.ramt
from
(select e.evaluationID , sum(e.readamount) as ramt from EVALUATION e 
where readday <= readamount
group by e.evaluationID) qry
where
EVALUATION.evaluationID = qry.evaluationID;
0 голосов
/ 02 мая 2020

Это должно быть ee:

UPDATE EVALUATION e join
           (select e.*,
                   (select sum(readamount)
                    FROM EVALUATION e2
                    where e2.userId = e.userId and e2.readday <= e.readday
                   ) as running_readamount
            FROM EVALUATION e
           ) ee
           on e.evaluationID = ee.evaluationID
        set e.readamount = ee.running_readamount;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...