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

时间:2011-04-28 10:01:18

标签: 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)

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

2 个答案:

答案 0 :(得分:80)

尝试这种方式

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);

答案 1 :(得分:15)

您无法对已锁定以进行删除的表进行后处理。使用hack select * from (query)作为Nicola状态将生成临时表而不是直接访问。

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