このクエリが機能しないのはなぜですか?
DELETE FROM recent_edits
WHERE trackid NOT IN
(SELECT DISTINCT history.trackid
FROM history JOIN recent_edits ON history.trackid=recent_edits.trackid
GROUP BY recent_edits.trackid)
次のメッセージが表示されます:「FROM句で更新するターゲットテーブル "recent_edits"を指定できません
このようにしてみてください
DELETE FROM recent_edits
WHERE trackid NOT IN
(select * from (SELECT DISTINCT history.trackid
FROM history JOIN recent_edits ON history.trackid=recent_edits.trackid
GROUP BY recent_edits.trackid) as t);
削除用にロックされているテーブルを後処理することはできません。 Nicolaが述べるように、ハックselect * from (query)
を使用すると、直接アクセスの代わりに一時テーブルが生成されます。
編集-ネストされており、すべてのテーブルにuniqueIDが必要になるため、使用するテーブルには必ずIDを指定してください。