开发者社区> 问答> 正文

MySQL数据库行、列去重问题

如题MySQL数据库怎么行去重复和列去重复。最好能有示例。

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

    建表:
    11
    插入数据:
    22
    创建唯一索引:
    33
    执行结果:
    ERROR 1062 (23000): Duplicate entry 'u2@email.com' for key 'idx_email'像这样提示有重复数据,导致创建唯一索引失败。是因为我们插入的email字段的确有重复数据。
    可以使用group by看看email字段完全不重复的数据。为了让结果看起来比较顺眼,我们使用order by对结果排一下序,这个不是必选项。可以发现,假如表中原本有30条记录,group by得出的结果是只有20条记录,这就说明有10条重复记录。
    5.删除重复数据只保留id最小的数据,其他重复的都给删掉。
    44
    执行结果:
    ERROR 1093 (HY000): You can't specify target table 'demo_table' for update in FROM clause
    这是是MySQL有保护机制,不可以这样操作。
    如果不是纯使用SQL方式处理,而是通过编程处理,可以把select min(id) from demo_table group by email查询出来的id结果集保存在变量中,然后再执行delete from demo_table where id not id结果集。有一点需要注意的是,可能id结果集很大很大,保存在变量中会吃内存。
    6.把需要保留的数据id存在临时表中,然后删除重复数据。
    55
    删除重复数据:
    66

    2019-07-17 18:40:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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

相关镜像