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

本文介绍了一种通过SQL语句删除数据库表中重复记录的方法,并提供了两种实现方式:一种是保留每组重复数据中ID最小的记录,另一种是保留ID最大的记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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)

原理和上面一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值