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

本文介绍了如何在MySQL中删除具有重复school_name字段的记录,同时保留每个唯一school_name对应的Id最小或最大的一条数据。通过使用GROUP BY和HAVING子句找出重复项,然后结合DELETE语句和子查询来删除多余的记录,确保每个学校名称只出现一次。
摘要由CSDN通过智能技术生成

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

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查找删除重复数据并只保留一条实例详解,希望能帮助到大家,谢谢大家对本站的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值