我正在使用以下查询,该查询是从另一个stackoverflow问题中看到的,但出现错误。

delete from mytable
 where myid not in (
    select max(myid)
      from mytable
group by myid2)


错误:


  #1093-表'mytable'被指定两次,既作为'DELETE'的目标,又作为数据的单独源


编辑2:

我也尝试过以下查询:

delete from mytable
 where myid in (
    SELECT
    myid, COUNT(*)
FROM
    mytable
GROUP BY
    myid2
HAVING
    COUNT(*) > 1)


并得到此错误:


  #1241-操作数应包含1列

最佳答案

在MySQL中,您需要为此使用JOIN。我认为您的意思是这样的:

delete t
   from mytable t left join
        (select max(myid) as myid
         from mytable
         group by myid2
        ) tt
        on t.myid = tt.myid
   where tt.myid is null;


?是您真正想要分组的内容。您的版本不会删除任何内容,因为group bymax()使用同一列。

关于mysql - 如何删除MySQL表中的重复行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56313371/

10-12 23:44