专业编程基础技术教程

网站首页 > 基础教程 正文

如何删除MySQL数据库中表的重复记录且仅保留其中一条?

ccvgpt 2024-08-03 12:27:27 基础教程 54 ℃

假如现在 MySQL数据库有几万条记录,由于某些原因导致其中存在一些重复的记录。那么如何删除重复记录只留其中一条呢?

比如,比如存在十条重复的记录,需要删除其它九条记录,只保留一条记录。


如何删除MySQL数据库中表的重复记录且仅保留其中一条?

数据准备

我们创建如下示例表, Student_Information 表创建 SQL如下 :



我们插入一部分数据到该表,其中存在多条姓名为 Anaa 手机号码重复数据,如下:



数据入库后,我们通过 select * from Student_Information 查询结果如下:



设计SQL

我们通过 Group by对手机号进行分组,然后计算每组最大ID作为保留数据,然后删除其他数据。SQL设计如下:


执行该SQL,结果如下:


我们可以看到,该 SQL删除了重复的数据时,并且保留了id最大的数据(最新数据)。


设计该SQL时需要注意什么?

我们需要注意,使用 MySQL 进行 Delete From 操作时,若子查询的 FROM 子句和删除或更新对象使用同一张表时,会出现"You can't specify target table for update in FROM clause”。错误。

比如,我们设计如下SQL。该 SQL从语法来看也实现删除 Student_Information 表重复数据,我们执行一下看下结果。


执行结果如下,我们可以看到抛出了"You can't specify target table for update in FROM clause”错误,那么该如何解决呢?


解决这个问题的方法也很简单,就是将 select 出的结果通过中间表再 select 一遍即可,如下:


Tags:

最近发表
标签列表