方案一(查询后保存):没有唯一ID

1.创建临时表 存储去重后的ID(临时表在关闭数据库连接后自动清除)
create TEMPORARY TABLE tmp_rownum
SELECT MAX(rownum) rownum FROM (SELECT @row:=@row +1 AS rownum,student.* from student ,(SELECT @row:=0) AS _t ) _a
GROUP BY name,sex

2.取出去重后的数据
select _a.* from (SELECT @row:=@row +1 AS rownum,student.* FROM student,(SELECT @row:=0) AS _t) _a
where _a.rownum in (
select rownum from tmp_rownum
)

方案二(查询后保存):有唯一ID

select * from student where id in (
select max(id) from student t group by name,sex )

(方案一和方案二结合)
根据是否有唯一ID判断
select column_name,extra from INFORMATION_SCHEMA.Columns where table_name=‘ykt0202’ and extra=‘auto_increment’

判断如果返回有结果,把得到的列名作为id 直接走方案二,没有的情况下,走方案一

方案三:

(先保存再删除)in…not in [耗时3.7s]

添加列:ALTER TABLE ykt0202 ADD COLUMN(
_id INT primary key auto_increment
)
修改列:ALTER TABLE ykt0202 modify COLUMN _id INT primary key auto_increment
删除列:ALTER TABLE ykt0202 drop column _id;
查询建表语句:SHOW CREATE TABLE ykt0202

delete from ykt0202_b where (hsdw,shzh) in (
select t.hsdw,t.shzh from (
select hsdw,shzh from ykt0202_b group by hsdw,shzh having count()>1
) t
) and _id not in (
select t._id from (
select max(_id) as _id from ykt0202_b group by hsdw,shzh having count(
)>1
) t
)

方案四:

(先保存再删除)[耗时2.4s]
delete from student where id in (
select max(id) from student t group by name,sex )

方案五:

–建临时表插入去重数据
create table ab_temp (select * from ab group by aid,bid having count()>1);
–删除重复数据
delete from ab where (aid,bid) in (
select t.aid,t.bid from (
select aid,bid from ab group by aid,bid having count(
)>1
) t
);
–插入去重数据
insert into ab select * from ab_temp;
–删除临时表
drop table ab_temp;

mysql去重的几种方案相关推荐

  1. URL 去重的 6 种方案!(附详细代码)

    来源 | Java中文社群(ID:javacn666) URL 去重在我们日常工作中和面试中很常遇到,比如这些: 可以看出,包括阿里,网易云.优酷.作业帮等知名互联网公司都出现过类似的面试题,而且和 ...

  2. mysql备份的三种方案(冷备、温备、热备)

    一.备份的目的 做灾难恢复:对损坏的数据进行恢复和还原 需求改变:因需求改变而需要把数据还原到改变以前 测试:测试新功能是否可用 二.备份需要考虑的问题 可以容忍丢失多长时间的数据: 恢复数据要在多长 ...

  3. mysql去重的几种方式

    1. distinct select distinct 列名 from 表名 2. row_number select *, row_number() over (partition by 想去重的列 ...

  4. php mysql 去重_mysql去重的两种方法实例详解

    这篇文章主要介绍了mysql去重的两种方法详解及实例代码的相关资料,这里对去重的两种方法进行了一一实例详解,需要的朋友可以参考下 mysql去重 方法一: 在使用MySQL时,有时需要查询出某个字段不 ...

  5. MySQL高可用的几种方案

    首先我们看看MySQL高可用的几种方案:   对于数据实时性要求不是特别严格的应用,只需要通过廉价的pc server 来扩展Slave 的数量,将读压力分散到多台Slave 的机器上面,即可通过分散 ...

  6. sql优化之:数据库索引创建原则,or/in/union与索引优化,聚集索引/非聚集索引/联合索引/索引覆盖,MySQL冗余数据的三种方案,MySQL双主一致性架构优化(来源:架构师之路)

    一.一些常见的SQL实践 (1)负向条件查询不能使用索引 select * from order where status!=0 and stauts!=1 not in/not exists都不是好 ...

  7. mysql去重查询的三种方法

    文章目录 前言 一.插入测试数据 二.剔除重复数据方法 1.方法一:使用distinct 2.方法二:使用group by 3.方法三:使用开窗函数 总结 前言 数据库生成环境中经常会遇到表中有重复的 ...

  8. mysql数据冗余_MySQL冗余数据的三种方案

    一,为什么要冗余数据 互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量. 水平切分会有一个patition key,通过patition key的查询能够直接定位到库,但是非pa ...

  9. mysql命令去重_mysql去重的两种方法详解及实例代码

    mysql去重 方法一: 在使用MySQL时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数, ...

最新文章

  1. C语言的32个关键字
  2. rest-framework 分页器
  3. 【直播课】6小时教你掌握轻量级网络,在安卓部署第一个深度学习模型
  4. for循环与while循环效率对比·5年以下编程经验必看C#】
  5. Java开发之上班摸鱼!写最少的代码!
  6. 进程与服务的签名_苹果app签名需要注意哪几点
  7. 设计模式装饰者模式_装饰者模式如何拯救了我的一天
  8. (转)@Autowire注解与自动装配
  9. 什么是5G NR技术?一文带你深入了解5G NR技术
  10. 人身三流指什么_保险合同的主体是什么,主体的变更是什么?
  11. 数据挖掘 自习笔记 第三章 定性归纳实践(下)
  12. QAM信号的调制解调原理
  13. win10下装黑苹果双系统
  14. Oracle HFM OHS服务无法启动
  15. 桌面路径改到D盘的目录下
  16. Fabric 1.0源代码分析(23)LevelDB(KV数据库)
  17. 计算机一级无法打开office,电脑中无法运行Office2016的两种解决方法
  18. QA之道知多少(一) 初出茅庐
  19. 短视频平台开发,首先要搭建短视频框架
  20. 面试-技术面试-问题模板(超实用)

热门文章

  1. 【论文阅读】22-GMS: Grid-based Motion Statistics for Fast, Ultra-robust Feature Correspondence
  2. 关于错误”AttributeError: module 'resource' has no attribute 'getrusage'”
  3. 编程语言与游戏的有趣类比
  4. 18所名校学霸教AI打王者,「开悟」AI+游戏高校大赛启动
  5. 我需要几个变量来记录游戏声音大小,游戏音效大小,游戏是否静音,请帮我给这些变量取名...
  6. 全球1/3年轻受访者表示,教育并没有教会他们就业技能
  7. GT1030 GTX1050 GT705 Pascal Maxwell Fermi系列N卡Monterey 12.5 – Ventura 13.2 开启QE/CI驱动详尽教程
  8. dell设置从ssd启动_戴尔笔记本如何设置从ssd启动系统?
  9. 四天四夜,与时间赛跑,致敬电赛
  10. 网络缓冲 linux,一个简单的linux缓冲区利用