我正在使用以下查询,该查询是从另一个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 by
和max()
使用同一列。关于mysql - 如何删除MySQL表中的重复行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56313371/