app开发者平台在数字化时代的重要性与发展趋势解析
1190
2022-11-19
mysql删除重复记录并且只保留一条 You can't specify target table `tb` for update in FROM clause
重复记录
如果不设置唯一索引约束,很容易插入重复数据,例如表单重复提交。
id | url |
1 | a.com |
2 | a.com |
3 | a.com |
4 | b.com |
5 | b.com |
6 | c.com |
这时候就不可避免的要把重复记录删掉。 首先要查出来哪些是不重复的数据:
SELECT MIN(id) id FROM `tb` GROUP by
用GROUP BY分组数据,并用MIN查找分组记录中最新的id。 然后再用DELETE删掉不在这里面的那些数据。
DELETE FROM tb WHERE id NOT IN (SELECT * FROM (SELECT MIN(id) id FROM `tb` GROUP by url) tb1)
报错
You can't specify target table `tb` for update in FROM clause
这是因为更新和查询不能同时进行,有死锁。 解决办法就是把查询结果放到临时表里。
DELETE FROM tb WHERE id NOT IN (SELECT * FROM (SELECT MIN(id) id FROM `tb` GROUP by url) tb1)
id | url |
1 | a.com |
4 | b.com |
6 | c.com |
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~