再用python进行数据爬取的时候,把需要的字段值存入MySQL数据库,却出现了重复数据,在解决这一问题的时候遇到的坑。在此记录一下,备忘。
数据资源:链接:https://pan.baidu.com/s/14VUd5ftpUXrAz-Ka5UXk4w 提取码:gry1
错误SQL语句:
delete
from maoyan
where id in(
select M.id
from maoyan M inner join (
select mm.nickName
from maoyan mm
group by mm.movieId, mm.startTime, mm.nickName, mm.cityName, mm.score, mm.content
having count(*) > 1
) m3 on M.nickName = m3.nickName
where M.id not in(select max(M.id)
from maoyan M inner join (
select mm.nickName
from maoyan mm
group by mm.movieId, mm.startTime, mm.nickName, mm.cityName, mm.score, mm.content
having count(*) > 1
) nick
on M.nickName = nick.nickName
group by nick.nickName)
);
报错信息:[HY000][1093] You can't specify target table 'maoyan' for update in FROM clause
以下是正确SQL语句:
delete
from maoyan
where id in(
select MY.id
from(
select M.id
from maoyan M inner join (
select mm.nickName
from maoyan mm
group by mm.movieId, mm.startTime, mm.nickName, mm.cityName, mm.score, mm.content
having count(*) > 1
) m3 on M.nickName = m3.nickName
where M.id not in(select max(M.id)
from maoyan M inner join (
select mm.nickName
from maoyan mm
group by mm.movieId, mm.startTime, mm.nickName, mm.cityName, mm.score, mm.content
having count(*) > 1
) nick
on M.nickName = nick.nickName
group by nick.nickName)
) MY
);
注意:在错误语句中红色字体标注部分不能直接使用,需要把这部分结果数据看成一张表,才能删除需要删除的数据。