博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Navicat使用教程:如何删除MySQL中具有不同ID的重复行
阅读量:6471 次
发布时间:2019-06-23

本文共 1844 字,大约阅读时间需要 6 分钟。

hot3.png

是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。

大多数重复记录分为两类:重复意义和非唯一键。在中,如何识别和删除具有重复意义的值涉及到重复意义;在中涉及到如何识别非唯一密钥。这意味着同一表中的两个记录具有相同的键,但可能具有或不具有不同的值和含义。这篇文章将介绍如何删除具有重复数据但具有不同键的行。

Navicat

按类型标识重复项

在中显示的最后一个查询以易于直观扫描的格式列出了所有重复项:

1

2

3

4

5

Repetitions     row_data

----------------------------------------------------------------

2       22 (DAVIS, JENNIFER) | 22 (DAVIS, JENNIFER)

2       23 (LOLLOBRIGIDA, JOHNNY) | 23 (GABLE, CHRISTIAN)

2       41 (WAHLBERG, NICK) | 12 (WAHLBERG, NICK)

在识别了所有重复的键和值之后,我们可以决定如何最好地处理冗余数据。

JENNIFER DAVIS以相同的22键出现在两个记录中,使这些行完全重复。Nick Walberg的名称字段是重复的,但ID不是。还有一个与两个无关的演员相关联的复制键:“JOHNNY LOLLOBRIGIDA”和“CHRISTIAN GABLE”的复制键#23。对于22和23的重复键,第一个键是真正的重复键,而第二个键只需要为其中一个记录生成一个新键。

使用删除联接删除行

在中,我们通过对值执行搜索和替换,从选择的结果集中删除了重复的值。在这里,我们将使用DELETE JOIN语句永久删除其中一个重复的行。

因为我们正在比较同一个表中的字段,所以必须将该表与其自身联接。我们可以通过比较WHERE子句中的ID来选择保留较低或较高的ID号。以下语句保留最高的ID:

1

2

3

4

5

6

7

DELETE FROM wp.amalgamated_actors a

  INNER JOIN wp.amalgamated_actors a2

WHERE a.id < a2.id

AND   a.first_name = a2.first_name

AND   a.last_name  = a2.last_name;

 

1 row(s) affected   0.093 sec

在本例中,受影响(已删除)行是标识为12的NICK WAHLBERG。快速选择确认结果:

1

2

3

4

5

6

7

8

9

10

11

12

id      first_name      last_name

-------------------------------------

10      PENELOPE        GUINESS

12      NICK        WAHLBERG

14      ED      CHASE

22      JENNIFER        DAVIS

23      JOHNNY      LOLLOBRIGIDA

27      BETTE       NICHOLSON

34      GRACE       MOSTEL

39      JOE     SWANK

23      CHRISTIAN       GABLE

22      JENNIFER        DAVIS

如果要保持最低的ID,只需将a.ida2.id。

1

2

3

4

5

6

7

8

9

10

11

12

id      first_name      last_name

-------------------------------------

10      PENELOPE        GUINESS

14      ED      CHASE

22      JENNIFER        DAVIS

23      JOHNNY      LOLLOBRIGIDA

27      BETTE       NICHOLSON

34      GRACE       MOSTEL

41      NICK        WAHLBERG

39      JOE     SWANK

23      CHRISTIAN       GABLE

22      JENNIFER        DAVIS

删除具有非唯一键的行

在JENNIFER DAVIS的例子中,他出现两次,同一个ID为22,我们需要使用不同的方法,因为使用a.id=a2.id运行上面的语句将针对表中的每一行!原因是我们基本上是在将每一行与自身进行匹配!在下一篇文章中,我们将学习如何删除具有非唯一键的行,如这些键。

转载于:https://my.oschina.net/u/4009527/blog/3007665

你可能感兴趣的文章
SVN服务器使用(二)
查看>>
反射获取内部类以及调用内部类方法
查看>>
C语言 - pthread
查看>>
App里面如何正确显示用户头像
查看>>
DATAGUARD维护:从库宕机后如何恢复到管理恢复模式
查看>>
U-BOOT之一:BootLoader 的概念与功能
查看>>
我的路上
查看>>
Velocity处理多余空白和多余空白行问题
查看>>
java值传递
查看>>
DB2与oracle有什么区别
查看>>
创建一个多级文件目录
查看>>
Picasa生成图片幻灯片页面图文教程
查看>>
js获取当前时间的前一天/后一天
查看>>
Python字符串的格式化
查看>>
C#反射---属性
查看>>
服务器常用的状态码及其对应的含义如下
查看>>
zoom和transform:scale的区别
查看>>
黄聪:PHP 防护XSS,SQL,代码执行,文件包含等多种高危漏洞
查看>>
svn status 显示 ~xx
查看>>
常用HiveQL总结
查看>>