首页 > 程序 > You can't specify target table 'yioon_members' for update in FROM clause
作者:ghostry 发布时间:2013-09-03 浏览: 6108
转载注明出处: https://blog.ghostry.cn/program/you-cant-specify-target-table-yioon_members-for-update-in-from-clause.html今天处理数据。去除重复。
刚开始我想新建一个表,然后查询老表插入新表,插入前做判断。后来想还得建立一个表和一个php文件。我是一个懒人,于是我另寻他法了。
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
这句是网上找的,意思是根据peopleid删除重复项保留rowid最小的那条记录。
看起来很好。可惜放到mysql里边就提示了标题的错误。意思是不能同时update和select同一个表。
搞了半天,最后改成这样
delete from yioon_members
where wid in (select wid from (select tmp.* from yioon_members tmp) tmp group by wid having count(wid) > 1)
and id not in (select min(id) id from (select tmp.* from yioon_members tmp) tmp group by wid having count(wid) > 1)
其中重要的是查询的from后边。我又查了一次表作为临时表这样就不同时查询和修改表了。效率相当低。不过幸好只需做一次。
上一篇: 天津之行下一篇: php在线执行