开发者社区> 问答> 正文

怎么在mysql中 删除重复数据只保留一条

sql代码:
11
插入数据时,没有判断重复数据。现在我想删除重复数据(根据 ask_id 和 cate 两个字段),并且保留重复数据中 id 最小的那一条记录即可。
我原本是这样写的:
22
但是用了加名 MYSQL 报错,因此去掉了别名,就成了最上面那条语句的样子,现在报的错是:
33
怎样解决?

展开
收起
蛮大人123 2016-02-08 17:39:17 4821 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    应该是由于 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
            )
    2019-07-17 18:39:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像