删除 - 我无法指定目标表?

mar*_*zzz 33 mysql mysql-error-1093

为什么这个查询不起作用?

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)
Run Code Online (Sandbox Code Playgroud)

我收到此消息:"您无法在FROM子句中为更新指定目标表"recent_edits"

Nic*_*ssu 85

试试这种方式

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);
Run Code Online (Sandbox Code Playgroud)

  • 这需要解释. (29认同)

Ely*_*ain 18

您无法对已锁定以进行删除的表进行后处理.使用黑客select * from (query)作为尼古拉州将生成临时表而不是直接访问.

编辑 - 确保为您使用的表提供ID,因为它是嵌套的,并且每个表都需要uniqueID.