使用子查询删除FROM Query并不起作用

时间:2014-11-29 20:11:37

标签: mysql

我想删除重复的条目,其中用户名是相同的,因为我错误地插入了两次数据,我无法使用唯一字段。

我首先使用选择查询选择了这些帐户以确保,我实际上得到了我想要删除的正确行,这很好用。现在我想删除它们,但是我收到了一个错误,我不知道为什么。这是我的查询和错误:

查询:

DELETE FROM Gifting
WHERE idGifting NOT IN 
(SELECT MIN(idGifting) FROM Gifting GROUP BY username)

错误:

#1093 - You can't specify target table 'Gifting' for update in FROM clause

1 个答案:

答案 0 :(得分:0)

您可以使用join

解决此问题
DELETE g
    FROM Gifting g LEFT JOIN
         (SELECT MIN(idGifting) as minid
          FROM Gifting
          GROUP BY username
         ) gid
         ON g.id = gid.minid
    WHERE gid.minid IS NULL;

这假设Gifting中没有重复的ID。