Я пытаюсь обновить значение столбца в кучке строк в таблице, используя UPDATE. Проблема в том, что мне нужно использовать подзапрос, чтобы получить значение для этого столбца, и это зависит от той же таблицы. Здесь запрос:
UPDATE user_account student
SET student.student_education_facility_id = (
SELECT teacher.education_facility_id
FROM user_account teacher
WHERE teacher.user_account_id = student.teacher_id AND teacher.user_type = 'ROLE_TEACHER'
)
WHERE student.user_type = 'ROLE_STUDENT';
Обычно, если учитель и ученик были в двух разных таблицах, mysql не жаловался. Но поскольку они оба используют одну и ту же таблицу, mysql вместо этого выводит эту ошибку:
ОШИБКА 1093 (HY000): вы не можете указать целевую таблицу "ученик" для обновления в разделе FROM
Есть ли способ заставить mysql выполнить обновление? Я на 100% уверен, что предложение from не будет затронуто по мере обновления строк.
Если нет, есть ли другой способ я могу написать это обновление sql для достижения такого же эффекта?
Спасибо!
РЕДАКТОР: Я думаю, что у меня это получилось:
UPDATE user_account student
LEFT JOIN user_account teacher ON teacher.user_account_id = student.teacher_id
SET student.student_education_facility_id = teacher.education_facility_id
WHERE student.user_type = 'ROLE_STUDENT';