невозможно обновить, чтобы обновить таблицу, так как она используется в условии from в подзапросе

0
UPDATE qn_answers
SET 'GRADE' = -100
WHERE 'QSN_ID' IN (SELECT q.'ID' FROM 'questions' q
LEFT JOIN qn_answers qa ON q.'ID' = qa.'QSN_ID'
WHERE q.'QSN_TYPE_ID' = 3 AND qa.'ISCORRECT' = 0 AND qa.'GRADE' = 0);

Я пытаюсь обновить столбец на основе результата из таблицы соединений, но он дает ОШИБКУ: 1093

Теги:

3 ответа

0

Я думаю, что стандартное обновление также будет работать здесь. Попробуй это:

UPDATE qa
SET 'GRADE' = -100
FROM 
'questions' q
LEFT JOIN
'qn_answers' qa
ON
q.'ID' = qa.'QSN_ID'
WHERE q.'QSN_TYPE_ID' = 3 AND qa.'ISCORRECT' = 0 AND qa.'GRADE' = 0;
0

использовать join update

UPDATE qn_answers a
join 
(SELECT q.'ID' FROM 'questions' q
LEFT JOIN qn_answers qa ON q.'ID' = qa.'QSN_ID'
WHERE q.'QSN_TYPE_ID' = 3 AND qa.'ISCORRECT' = 0 AND qa.'GRADE' = 0
) b on a.'QSN_ID'=b.'ID'
SET 'GRADE' = -100
0

Я думаю, что вы хотите присоединиться к обновлению здесь, без подзапроса:

UPDATE qn_answers qa
INNER JOIN questions q
    ON qa.QSN_ID = q.ID
SET GRADE = -100
WHERE
    q.QSN_TYPE_ID = 3 AND
    qa.ISCORRECT = 0  AND
    qa.GRADE = 0;

Сообщение об ошибке связано с тем, что вы используете целевую таблицу qn_answers как часть объединения. Вы не можете сделать это непосредственно в обновлении MySQL.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню