博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql删除多个字段重复数据有主键和没主键解决方法(mysql)
阅读量:6626 次
发布时间:2019-06-25

本文共 1527 字,大约阅读时间需要 5 分钟。

hot3.png

table user

     name age nub
     张三    12  23
     张三    12  23
     张三    12  23
     李四    13  21
     李四    13  21
     王五    11  25

查询重复记录(一条)

sql:select * from user group by name,age,nub having count(*)>1;
    (如需统计条数请使用conut)

set:

     name age nub
     张三   12  23
     李四   13  21

查询重复记录(所有)

sql:select * from user  a where (a.name,a.age,a.nub)  in (select *  from user group by name,age,nub having count(*)>1);

set

     name age nub
     张三   12   23
     张三   12  23
     张三   12  23
     李四   13  21
     李四   13  21

删除重复记录保留一条

 步骤:
     1.将查询的数据插入一个新的表中;
     2.删除原来的表的数据
     3.将新表的数据再插入原表中
     4,删除新表

 sql:

     1. create table new_table (select * from user group by name,age,nub having count(*)>1);
 
     2.delete from user  a where (a.name,a.age,a.nub)  in
       (select * from
       (select *  from user group by name,age,nub having count(*)>1) as b );

       在这里使用了两次select 因为:

       delete from user  a where (a.name,a.age,a.nub)  in

       (select *  from user group by name,age,nub having count(*)>1);会出现错误    
 

       不能对同一表子查询后进行插入或者删除 要在子查询再嵌套一个查询 让对该表查询成为孙查询;

 
     3.insert into user (select name,age,nub from new_table);
 
      注意:在插入数据的时候查询表得到字段的顺序要与原表相同否者会出现数据错误;
      如果原表数据顺序与新表相同可以用这条语句insert into user (select * from new_table);

     4.drop table new_table;

到此完成操作 最后的数据:

     table user

          name age nub

          张三   12   23
          李四   13   21
          王五   11   25

如果原表中含有主键的话更好操作
 不用四条sql语句了 直接执行删除操作
 delete from user  a where (a.name,a.age,a.nub)  in
   (select name,age,nub from
   (select *  from user group by name,age,nub having count(*)>1) as b  )
   and id not in(select min(id) from
   (select *  from user group by name,age,nub having count(*)>1) as c);

 

注意事项: 在使用 (name,age,address) in (select *)的时候 * 只能是三列 如果有更多列则

不能使用 *,要明确指出是哪些列;

转载于:https://my.oschina.net/u/852445/blog/206884

你可能感兴趣的文章
企业Windows域环境中的组策略应用案例二
查看>>
ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑
查看>>
51CTO首届卡拉OK大赛:我唱,为欢聚而歌
查看>>
LVM逻辑卷管理详解
查看>>
如何实现 Service 伸缩?- 每天5分钟玩转 Docker 容器技术(97)
查看>>
java socket编程
查看>>
MySQL基础建设之硬盘篇
查看>>
Java格式化时间
查看>>
安装Hyper-V
查看>>
配置XenDesktop一例报错-序列不包含任何元素
查看>>
数组循环移位
查看>>
一个优秀的公众号运营者需要具备哪些能力?
查看>>
桌面云
查看>>
教大家如何在word 2007中同时打出对齐上下标以及字母头上有波浪线(非编辑器)...
查看>>
Spring Boot五:使用properties配置文件实现多环境配置
查看>>
vim取消高亮显示
查看>>
设计从“心“开始
查看>>
windows7 系统盘 瘦身软件介绍: 冗余文件清理工具
查看>>
SSH整合步骤
查看>>
myeclipse tomcat内存溢出解决方法
查看>>