Как можно, и можно ли вообще, осуществить обновление полей двух таблиц?
UPDATE workers INNER JOIN reviews_of_workers
ON workers.id = reviews_of_workers.worker_id
SET
@competence_rand = 7+FLOOR(RAND()*4),
@speed_work_rand = 7+FLOOR(RAND()*4),
`reviews_total` = 1,
`competence_total` = @competence_rand,
`speed_work_total` = @speed_work_rand,
`competence` = @competence_rand,
`speed_work` = @speed_work_rand
WHERE `workers`.`id`>=64508716;
Проблема в том, что не работает блок:
@competence_rand = 7+FLOOR(RAND()*4),
@speed_work_rand = 7+FLOOR(RAND()*4),
Если его поставить перед UPDATE, то работает, но вычисляется один раз и для всех строк.
Как можно сделать так, чтобы значения вычислялись каждый раз для каждой строки UPDATE? Может как-то при помощи хранимой процедуры?
В фразе set любая часть должна содержать обновляемую колонку, поэтому отдельные приравнивания, не меняющие никакую колонку не допустимы. Но можно совместить обновление колонки с запоминанием значения в переменной:
competence_total = (@competence_rand := 7+FLOOR(RAND()*4)),
competence = @competence_rand
Продвижение своими сайтами как стратегия роста и независимости