Я пытаюсь запустить этот запрос в MySQLВы не можете указать целевую таблицу «» для обновления в ЕКЕ
UPDATE studentassessment sa SET sa.issubmitted=FALSE WHERE
sa.studentassessmentid <>
(SELECT studentassessmentid FROM studentassessment sa1 WHERE
sa.StudentId=sa1.StudentId
AND sa.AssessmentPeriodId=sa1.AssessmentPeriodId
ORDER BY sa1.studentassessmentid DESC LIMIT 0, 1)
AND sa.studentid=568;
, который дает мне эту ошибку
Вы не можете указать цель table 'sa' для обновления в FROM FROM
Я нашел номер этого типа вопросов, но они относятся к запросам, для которых они были заданы, поэтому мне не очень помогли, из одного из ответов SO Это Ried изменить запрос, как этот
UPDATE studentassessment sa SET issubmitted=FALSE WHERE
sa.studentassessmentid <>
(
SELECT studentassessmentid FROM
(
SELECT studentassessmentid FROM studentassessment sa1 WHERE
sa.StudentId=sa1.StudentId
AND sa.AssessmentPeriodId=sa1.AssessmentPeriodId
ORDER BY sa1.studentassessmentid DESC LIMIT 0, 1
) AS T
)
AND sa.studentid=568;
Тогда я начал получать эту ошибку
Неизвестный столбец 'sa.StudentId' в 'где п'
Любая помощь?
Редактировать
Это также не работает
UPDATE studentassessment sa
INNER JOIN
(SELECT studentassessmentid FROM studentassessment sa1 WHERE
sa.StudentId=sa1.StudentId
AND sa.AssessmentPeriodId=sa1.AssessmentPeriodId
ORDER BY sa1.studentassessmentid DESC LIMIT 0, 1) T
ON sa.studentassessmentid<>T.StudentAssessmentId
SET sa.issubmitted=0
WHERE sa.studentid=568;
Спасибо! Фактически временная концепция таблицы была в моем сознании, но я должен передать запрос кому-то, чтобы запустить, поэтому я думал, могу ли я сделать это в одном самом запросе. Значит, нет никакой возможности, кроме временной таблицы? –
@PawanNogariya вы можете сделать это также с помощью объединений, но я не вижу, как вы можете это сделать в этом конкретном случае. В любом случае, он добавил, чтобы ответить. – Vyktor
Извините, я не вижу участия в вашем ответе, хотя я тоже пробовал с присоединением, что не работал, я добавил его к моему вопросу –