このクエリを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;
これは私にこのエラーを与えます
FROM 句で更新対象のテーブル 'sa' を指定することはできません
このタイプの質問がいくつか見つかりましたが、それらは質問されたクエリに固有のものであるため、SOの回答の1つからあまり役に立ちませんでした。クエリをこのように変更しようとしました
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;
その後、このエラーが発生し始めました
「where句」の不明な列「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;