Обновление полей двух таблиц

111
10 декабря 2020, 05:50

Как можно, и можно ли вообще, осуществить обновление полей двух таблиц?

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? Может как-то при помощи хранимой процедуры?

Answer 1

В фразе set любая часть должна содержать обновляемую колонку, поэтому отдельные приравнивания, не меняющие никакую колонку не допустимы. Но можно совместить обновление колонки с запоминанием значения в переменной:

competence_total = (@competence_rand := 7+FLOOR(RAND()*4)),
competence = @competence_rand
READ ALSO
В чем разница между php и php –fpm?

В чем разница между php и php –fpm?

Мне поставлена задача установить на сервер связку nginx и php- fpmЯ не очень понял чем php-fpm отличается от ядра php, написано что nginx самостоятельно...

135
Не загружаются фотографии на сайт

Не загружаются фотографии на сайт

Хочу, чтобы пользователь мог загружать фотографии в папку сайта с помощью кнопки (и для их дальнейшего вывода)Пишет, что фотографию загрузил,...

142
phpmyadmin кодировка

phpmyadmin кодировка

здравствуйте ребята есть вопрос я в phpmyadmin кодировку поставил utf-8 general_ci но с русскими и армянскими буквами есть проблема показивает ????????????????...

144
imap_open виснет

imap_open виснет

В php новичок, сильно не пинайте плизВиснет imap_open причем с концами, пока не убьешь процесс

120