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:
|
<<: CentOS7-Bereitstellung Flask (Apache, mod_wsgi, Python36, venv)
Der Excel-Export schlägt in der Docker-Umgebung i...
1. Laden Sie das Ubuntu16.04-Image und den entspr...
1. Einleitung Der Unterschied zwischen Zeilensper...
Inhaltsverzeichnis 1. MySQL-Installation 1.2 Tabe...
Inhaltsverzeichnis 1. Grundkenntnisse: 2. DHCP-Se...
Beim Herunterfahren des MySQL-Servers können, abh...
Die Echtzeitreplikation ist die wichtigste Method...
<br />Vor Kurzem hat UCDChina eine Artikelse...
1. Der Unterschied zwischen HTTP und HTTPS HTTP: ...
Die Jenkins-Konfiguration von Benutzerrollenberec...
Heute ist mir plötzlich aufgefallen, dass die Stil...
MySQL erstellt bei der Installation automatisch e...
Inhaltsverzeichnis 1. Verwendung von Keep-Alive A...
Inhaltsverzeichnis 1. Registrieren Sie ein Konto ...
In diesem Artikelbeispiel wird der spezifische Co...