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()
  • 相关阅读:
    [转]C# 文本框只能输入数字
    [转]C# dataGridview 报“索引-1没有值”的解决办法
    配置<authorization>节(配置文件)
    [转]javascript的urlencode
    SSM框架搭建问题
    web server
    mysql 系列
    UI 框架、ORM、权限系统
    一个基于 .NET Core 2.0 开发的简单易用的快速开发框架
    DotNetty 版 mqtt 开源客户端 (MqttFx)
  • 原文地址:https://www.cnblogs.com/Struts-pring/p/11032918.html
Copyright © 2011-2022 走看看