我正在使用以下查询,该查询是我从另一个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列
答案 0 :(得分: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()
使用同一列。