zoukankan      html  css  js  c++  java
  • msyql 去重

    delete from userinfo where busi_id in
    (select busi_id from
    (select busi_id from userinfo group by busi_id having count(busi_id)>1) tmp1)
    and id not in
    (select id from
    (select min(id) id from userinfo group by busi_id having count(busi_id)>1) tmp2);


    无主键 添加主键再去重操作。


    DELETE FROM user WHERE id NOT IN ( SELECT temp.min_id FROM ( SELECT MIN(id) min_id FROM user GROUP BY name,age )AS temp );

    如果在设计表时没有指定主键,
    导入数据时可能出现重复导入,
    导致一个表中出现多条完全相同的多条记录。
    以下是解决这个问题的思路:

    使用distinct语句筛选出不重复的记录存入临时表tmp;
    create table tmp as (select distinct sno,sname,age,sex from s);
     
    删除原表中的数据记录
    delete from s;
     
    将临时表中的数据插入到原表。
    insert into s select * from tmp;
     
    删除临时表
    drop table tmp; 

    有一张学生表,有姓名和性别(0:女,1:男),假如我们想删除姓名和性别都相同的数据,这里介绍2中方法

    首先看一下数据表

    编号 姓名 性别
    1  王璐 0
    2  李萌 0
    3  张帅  1 
    4   李萌   0 
    5  张帅  1 
    6   刘涛   1 

    NO.1

    保留id较小的数据

    DELETE t1 FROM student t1, student t2
    WHERE t1.name = t2.name AND t1.sex = t2.sex AND t1.id > t2.id

    保留id较大的数据

    DELETE t1 FROM student t1, student t2
    WHERE t1.name = t2.name AND t1.sex = t2.sex AND t1.id < t2.id

    注意最后的t1.id > t2.id不要忘记,否则会删除所有的数据,操作之前一定要先备份好数据

    NO.2

    INSERT INTO student_tmp(name, sex)
    SELECT DISTINCT name, sex FROM student

    总结

    两种方法优缺点:

    方法二所需时间更短,但是方法二当主键为uuid时,需要处理一下,可将把主键设置为int自增,然后执行下面的sql就可以了。

    UPDATE student_tmp SET id = uuid()
  • 相关阅读:
    12.使用正则表达式
    12/12
    thinkphp 5 及一下或php项目里实现模糊查询
    mysql中文乱码--存入mysql里的中文变成问号的解决办法
    ATOM使用的一点心得与技巧——在一个窗口打开多个项目
    php里的$this的 含义
    pycharm2017.3专业版激活注册码
    thinkphp3.2.3的使用心得之i方法(零)
    thinkphp3.2.3的使用心得(零)
    linux系统下phpstudy里的mysql使用方法
  • 原文地址:https://www.cnblogs.com/Struts-pring/p/11032918.html
Copyright © 2011-2022 走看看