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運行上面的語句將針對表中的每一行!緣由是咱們基本上是在將每一行與自身進行匹配!在下一篇文章中,咱們將學習如何刪除具備非惟一鍵的行,如這些鍵。