MySQL-Deduplizierungsmethoden

MySQL-Deduplizierungsmethoden

MySQL-Deduplizierungsmethoden

【Anfänger】 Es gibt sehr wenige wiederholte Zeilen

Verwenden Sie distinct, um sie herauszufinden, und löschen Sie sie dann manuell einzeln.

[Mittelstufe] Duplikate basierend auf einem einzelnen Feld entfernen

Beispiel: Duplikate aus dem ID-Feld entfernen

Verwendung: Rufen Sie den Wert des wiederholten ID-Felds ab, vergleichen Sie die Felder mit unterschiedlichen Daten in den Zeilen mit demselben ID-Feld und löschen Sie alle wiederholten Zeilen außer der Zeile mit dem kleinsten (oder größten) Feld. Im Allgemeinen wird der Primärschlüssel zum Vergleich verwendet, da der Wert des Primärschlüssels eindeutig und absolut unterschiedlich sein muss.

ID-Name

1 ein

1 b

2 c

2 ein

3 c

Ergebnis:

ID-Name

1 ein 

2 ein

arbeiten:

aus a_tmp löschen 

wobei id in (select * from (select b.id from a_tmp b group by b.id having count(b.id) >1) bb) 

und Name nicht in (select * from (select min(a.name) from a_tmp a GROUP BY a.id having count(a.id) >1) aa);

Beachten:

Die fettgedruckten und grünen Wörter oben müssen mit einem Alias ​​versehen sein und das Format „select * from (……)“ verwenden, andernfalls wird ein Fehler gemeldet:

[Err] 1093 - Sie können die Zieltabelle „a_tmp“ für die Aktualisierung nicht in der FROM-Klausel angeben

[Erweitert] Entfernen Sie Duplikate durch Wiederholung mehrerer Felder

Beispielsweise um Duplikate mit derselben ID und demselben Namen zu entfernen, d. h. um dieselbe ID und denselben Namen als doppelte Zeilen zu zählen und um dieselbe ID, aber unterschiedliche Namen als nicht doppelte Zeilen zu zählen

Verwendung: Ähnlich wie bei einem einzelnen Feld wird der Primärschlüssel im Allgemeinen zum Vergleich verwendet, da der Wert des Primärschlüssels eindeutig sein muss.

ID Name Zeilen-ID

1a1

1 bis 2

1 b 3

2 b 4

2 b 5

3 c 6

3d7

Ergebnis:

ID Name Zeilen-ID

1a1 

1 b 3

2 b 4

3 c 6

3d7

arbeiten:

Der Erste:

aus a_tmp löschen 

wobei (id,name) in (select * from (select b.id,b.name from a_tmp b group by b.id,b.name having count(b.id) >1) bb) 

und rowid nicht in (select * from (select min(a.rowid) from a_tmp eine Gruppe nach a.id,a.name mit count(a.id) >1) aa);

Zweiter Typ:

Verbinden Sie die Werte der ID- und Namensfelder und fügen Sie sie in die temporäre Tabelle b_tmp ein. Anschließend können Sie die [Mittelstufe] Methode zur Beurteilung und Löschung einzelner Felder verwenden.

#Fügen Sie den Wert der beiden verbundenen Felder und das Feld mit dem eindeutigen Wert in der Tabelle a_tmp in die Tabelle b_tmp ein

in b_tmp einfügen 

 wähle concat(id,name),rowid aus a_tmp;

#Finden Sie die Zeilen, die beibehalten werden müssen select id_name,max(rowid)

 von b_tmp 

 Gruppieren nach ID_Name

 mit Anzahl(ID_Name)>1;

#Verwenden Sie die Methode [Zwischenstufe] oder die gespeicherte Prozedur, um die Deduplizierungsarbeit abzuschließen

[Ultimate] Jede Zeile hat zwei Kopien der gleichen Daten

Zum Beispiel:

Verwendung: Wenn die Daten in der gesamten Zeile identisch sind, können sie nicht mit SQL-Anweisungen gelöscht werden, da es keine bedingte Einschränkung gibt, mit der eine Zeile behalten und alle identischen Zeilen gelöscht werden können. Es gibt keine unterschiedlichen Felder, die Sie selbst erstellen können, d. h.: Fügen Sie ein Feld hinzu, stellen Sie es auf Auto-Inkrement ein und legen Sie es als Primärschlüssel fest. Dann werden automatisch Werte hinzugefügt.

ID-Name

1 ein

1 ein

1 b

1 b

2 c

2 c

3 c

3 c

Ergebnis:

ID Name Zeilen-ID

1a1

1 b 3

2 c 5

3 c 7

arbeiten:

Fügen Sie ein Auto-Inkrement-Feld hinzu und legen Sie es vorübergehend als Primärschlüssel fest.

Verwenden Sie die oben beschriebenen Methoden [Mittelschwer] und [Fortgeschritten].

Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, danke für Ihre Unterstützung dieser Site!

Das könnte Sie auch interessieren:
  • MySQL-Entwicklungskenntnisse: JOIN-Update und Datenduplikationsprüfung/Deduplizierung
  • Implementierungsanweisungen zur Duplikatsprüfung und Deduplizierung von MySQL-Daten
  • Eine SQL-Anweisung schließt die MySQL-Deduplizierung ab und behält eine
  • Eine kurze Diskussion zur Deduplizierung in SQL-Datenbanken
  • Ein kleines Beispiel für SQL-Gruppierung und -Sortierung zum Entfernen von Duplikaten
  • Detaillierte Erklärung zweier Methoden zur Deduplizierung in MySQL und Beispielcode
  • Eine praktische Anleitung zum Prüfen und Entfernen doppelter SQL-Befehle

<<:  CentOS7-Bereitstellung Flask (Apache, mod_wsgi, Python36, venv)

>>:  Detaillierte Erläuterung der Anwendungsbereitstellungspraxis für Docker + Jenkins + Gitlab + Django

Artikel empfehlen

Der Excel-Export schlägt in der Docker-Umgebung immer fehl

Der Excel-Export schlägt in der Docker-Umgebung i...

Schritte zum Übertragen des neuen Kernels auf das Linux-System

1. Laden Sie das Ubuntu16.04-Image und den entspr...

Virtueller vsftpd-Benutzer basierend auf MySql-Authentifizierung

Inhaltsverzeichnis 1. MySQL-Installation 1.2 Tabe...

So erstellen Sie einen DHCP-Server in Linux

Inhaltsverzeichnis 1. Grundkenntnisse: 2. DHCP-Se...

So fahren Sie MySQL sicher herunter

Beim Herunterfahren des MySQL-Servers können, abh...

Das Erlebnis gestalten: Was auf dem Knopf liegt

<br />Vor Kurzem hat UCDChina eine Artikelse...

Implementierung der Nginx-Konfiguration HTTPS-Sicherheitsauthentifizierung

1. Der Unterschied zwischen HTTP und HTTPS HTTP: ...

So konfigurieren Sie Benutzerrollenberechtigungen in Jenkins

Die Jenkins-Konfiguration von Benutzerrollenberec...

Eine kurze Erläuterung der MySQL-Benutzerberechtigungstabelle

MySQL erstellt bei der Installation automatisch e...

Beispiel für die Verwendung der in Vue integrierten Komponente „Keep-Alive“

Inhaltsverzeichnis 1. Verwendung von Keep-Alive A...

So verwenden Sie die Baidu Map API im Vue-Projekt

Inhaltsverzeichnis 1. Registrieren Sie ein Konto ...

Vue implementiert grafischen Überprüfungscode

In diesem Artikelbeispiel wird der spezifische Co...