sql代码:
插入数据时,没有判断重复数据。现在我想删除重复数据(根据 ask_id 和 cate 两个字段),并且保留重复数据中 id 最小的那一条记录即可。
我原本是这样写的:
但是用了加名 MYSQL 报错,因此去掉了别名,就成了最上面那条语句的样子,现在报的错是:
怎样解决?
应该是由于 bt_ask_to_cate_backup 在 where 条件里出现了吧,可以copy出一个新表,然后用新表做查询条件 ,下边的代码没测试过。注意备份你的数据
create table bt_ask_to_cate_backup_temp select * from bt_ask_to_cate_backup;
delete from bt_ask_to_cate_backup
where (ask_id, cate)
in (SELECT ask_id, cate
FROM bt_ask_to_cate_backup_temp
group by ask_id,cate
having count(*) > 1
)
and id
not in (SELECT min(id)
FROM bt_ask_to_cate_backup_temp
group by ask_id,cate
having count(*) > 1
)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。