mysql查找删除重复数据并只保留一条实例详解

有这样一张表,表数据及结果如下:

school_id school_name total_student test_takers 1239 Abraham Lincoln High School 55 50 1240 Abraham Lincoln High School 70 35 1241 Acalanes High School 120 89 1242 Academy Of The Canyons 30 30 1243 Agoura High School 89 40 1244 Agoura High School 100 50

我们可以看出,school_name的字段值有重复数据(Abraham Lincoln High School 和Agoura High School分别出现两次),那么如何删除这两条数据,从而只让这两个数值出现一次呢? 具体实现方法如下:

1、删除重复记录,保存Id最小的一条

delete FROM `test` WHERE `school_name` in (SELECT `school_name` FROM `test` GROUP BY `school_name` HAVING COUNT( * ) >1) and school_id not in (select min(school_id) from test group by school_id having count(* )>1)

先使用GROUP BY having语法查询出重复的数据,然后删除重复数据并保留school_id最小的一条.

2、删除重复记录,保存Id最大的一条

delete FROM `test` WHERE `school_name` in (SELECT `school_name` FROM `test` GROUP BY `school_name` HAVING COUNT( * ) >1) and school_id not in (select max(school_id) from test group by school_id having count(* )>1)

原理和上面一样。

以上就是mysql查找删除重复数据并只保留一条实例详解,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2024-07-30 02:19:19

mysql查找删除重复数据并只保留一条实例详解的相关文章

你真的会玩SQL吗?删除重复数据且只保留一条

在网上看过一些解决方法 我在此给出的方法适用于无唯一ID的情形 表:TB_MACVideoAndPicture 字段只有2个:mac,content mac作为ID,正常情况下mac数据是唯一的,由于操作失误导致数据插入多次,导致出现多个mac,content重复数据,现在只保留一条,删除多余的 大体思想是给重复数据一个自增ID,过滤出每组里面最小ID,删除原数据中所有重复数据再将最小ID插入 --查询出所有重复数据,并给定递增id SELECT IDENTITY( INT,1,1 ) AS i

SQL语句实现删除重复记录并只保留一条_数据库其它

复制代码 代码如下: delete WeiBoTopics where Id in(select max(Id) from WeiBoTopics group by WeiBoId,Title having COUNT(*) > 1); SQL:删除重复数据,只保留一条用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 复制代码 代码如下:  select * f

Excel中轻松查找删除重复数据(Excel 2007)

  由于重复输入或粘贴等原因,Excel 2007工作表往往存在重复的数据或记录.如果工作表的规模比较大,手工查找和删除重复数据很难做到"完全彻底".不过这个问题对Excel 2007来说则是"小菜一碟",下面就为大家介绍Excel中轻松查找删除重复数据 的技巧. 1.标识重复数据 打开工作表,选中可能存在重复数据或记录的区域.单击"开始"选项卡中的"条件格式"打开菜单,在"突出显示单元格规则"子菜单下选择

MySQL中删除重复数据的简单方法_Mysql

MYSQL里有五百万数据,但大多是重复的,真实的就180万,于是想怎样把这些重复的数据搞出来,在网上找了一圈,好多是用NOT IN这样的代码,这样效率很低,自己琢磨组合了一下,找到一个高效的处理方式,用这个方式,五百万数据,十来分钟就全部去除重复了,请各位参考. 第一步:从500万数据表data_content_152里提取出不重复的字段SFZHM对应的ID字段到TMP3表 create table tmp3 as select min(id) as col1 from data_content

快速检索 轻松查找删除重复数据

  由于重复输入或粘贴等原因,Excel 2007工作表往往存在重复的数据或记录.如果工作表的规模比较大,手工查找和删除重复数据很难做到"完全彻底".不过这个问题对Excel 2007来说则是"小菜一碟",因为它的几个新功能可以轻松解决这类问题. 1.标识重复数据 打开工作表,选中可能存在重复数据或记录的区域.单击"开始"选项卡中的"条件格式"打开菜单,在"突出显示单元格规则"子菜单下选择"重复

wps重复数据怎么删除 wps查找删除重复数据方法

1.先来给各位作一个测试吧,我们打开 wps表格,然后如下图所示点击导致上的"数据==重复项===高亮重复项==设置" 2.如下图所示会把重复的数据显示,如第九.十行的内容分别和第六.八行重复了. 何批量将表格中重复内容删去呢? 3.我们全选表格,然后再找到wps菜单栏"数据"--点击格式栏"重复项"==删除重复项 ,如下图所示.   4.然后在弹出删除重复项的对话框中我们点击"重复项"中找到"删除重复项"

PHP数据的提交与过滤基本操作实例详解_php技巧

本文实例讲述了PHP数据的提交与过滤基本操作.分享给大家供大家参考具体如下 1.php提交数据过滤的基本原则 1提交变量进数据库时我们必须使用addslashes()进行过滤像我们的注入问题一个addslashes()也就搞定了.其实在涉及到变量取值时intval()函数对字符串的过滤也是个不错的选择. 2在php.ini中开启magic_quotes_gpc和magic_quotes_runtime.magic_quotes_gpc可以把get,post,cookie里的引号变为斜杠. mag

sqlserver中重复数据值只取一条的sql语句_MsSql

复制代码 代码如下: --建立数据表createtable TestData ( ID int identity(1,1) primary key, Data int, ColA varchar(20), ColB varchar(20) ) go --插入测试数据 declare @counts int declare @i int set @counts = 10000 set @i = 1 while @i<=@counts begin insert TestData (Data,ColA

Mysql中如何查找并删除重复数据

考试系统中做了一个用户导入试题功能,导致用户导入了很多重复的试题,我需要查询及删除一下重复的记录,于是有了这篇文章. (一)单个字段 1.查找表中多余的重复记录,根据(question_title)字段来判断  代码如下 复制代码 select * from questions where question_title in (select question_title from people group by question_title having count(question_title