Вы можете использовать коррелированный подзапрос. Просто оставьте res_booking
вне подзапроса:
UPDATE res_booking rbg
SET rbg.host_id = (SELECT vw.entity_id
FROM pass_single ps JOIN
voucher_who vw
ON vw.pass_id = ps.pass_id
WHERE ps.book_id = rbg.booking_id
)
WHERE rbg.host_id IS NULL;
MySQL генерирует ошибку, если вы повторно используете обновляемую таблицу в подзапросе. Однако это не нужно. Просто исправьте предложение корреляции, чтобы использовать таблицу ps
.
Обратите внимание, что это может привести к ошибке, если подзапрос возвращает более одной строки. Это хорошо. Если это произойдет, вам необходимо выяснить, как справиться с этой ситуацией.