Navicat Premium是一个可链接多种数据库的管理工具,它可让你以单一程序同时链接到MySQL、Oracle及PostgreSQL数据库,让管理不一样类型的数据库更加的方便。数据库
大多数重复记录分为两类:重复意义和非惟一键。在Navicat使用教程:如何在MySQL中定位和删除有重复意义的值中,如何识别和删除具备重复意义的值涉及到重复意义;在Navicat使用教程:如何用非惟一键识别重复项中涉及到如何识别非惟一密钥。这意味着同一表中的两个记录具备相同的键,但可能具备或不具备不一样的值和含义。这篇文章将介绍如何删除具备重复数据但具备不一样键的行。工具
在Navicat使用教程:如何用非惟一键识别重复项中显示的最后一个查询以易于直观扫描的格式列出了全部重复项:学习
1spa 2code 3htm 4blog 5教程 |
|
在识别了全部重复的键和值以后,咱们能够决定如何最好地处理冗余数据。
JENNIFER DAVIS以相同的22键出如今两个记录中,使这些行彻底重复。Nick Walberg的名称字段是重复的,但ID不是。还有一个与两个无关的演员相关联的复制键:“JOHNNY LOLLOBRIGIDA”和“CHRISTIAN GABLE”的复制键#23。对于22和23的重复键,第一个键是真正的重复键,而第二个键只须要为其中一个记录生成一个新键。
在Navicat使用教程:如何在MySQL中定位和删除有重复意义的值中,咱们经过对值执行搜索和替换,从选择的结果集中删除了重复的值。在这里,咱们将使用DELETE JOIN语句永久删除其中一个重复的行。
由于咱们正在比较同一个表中的字段,因此必须将该表与其自身联接。咱们能够经过比较WHERE子句中的ID来选择保留较低或较高的ID号。如下语句保留最高的ID:
1 2 3 4 5 6 7 |
|
在本例中,受影响(已删除)行是标识为12的NICK WAHLBERG。快速选择确认结果:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
若是要保持最低的ID,只需将a.ida2.id。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
在JENNIFER DAVIS的例子中,他出现两次,同一个ID为22,咱们须要使用不一样的方法,由于使用a.id=a2.id运行上面的语句将针对表中的每一行!缘由是咱们基本上是在将每一行与自身进行匹配!在下一篇文章中,咱们将学习如何删除具备非惟一键的行,如这些键。