Dieser Artikel stellt hauptsächlich die relevanten Informationen zur MySQL-Deduplizierungsmethode vor. Freunde, die sie benötigen, können sich auf
MySQL-Deduplizierungsmethode
【 beziehen. Einfach: Es gibt nur sehr wenige doppelte Zeilen
Verwenden Sie „distinctct“, um sie zu finden, und löschen Sie sie dann manuell löschen Zeile für Zeile.
[Mittel] Deduplizierung entsprechend der Wiederholung eines einzelnen Feldes
Zum Beispiel: Deduplizierung des ID-Feldes
Verwendung: Get die id Verwenden Sie für die Werte doppelter Felder die Zeilen, in denen sich das gleiche ID-Feld befindet, um die Felder mit unterschiedlichen Daten zu vergleichen, und löschen Sie alle doppelten Zeilen mit Ausnahme der Zeile, in der sich das kleinste (oder größte) Feld befindet. Im Allgemeinen wird der Primärschlüssel zum Vergleich verwendet, da der Wert des Primärschlüssels ein eindeutiger Wert sein muss und nicht identisch sein darf.
id name 1 a 1 b 2 c 2 a 3 c
Ergebnis:
id name 1 a 2 a
Vorgang:
delete from a_tmp where id in (select * from (select b.id from a_tmp b group by b.id having count(b.id) >1) bb) and name not in (select * from (select min(a.name) from a_tmp a GROUP BY a.id having count(a.id) >1) aa);
Hinweis:
Die oben genannten fettgedruckten und grünen Wörter müssen mit einem Alias versehen sein und das Format „select * from (...)“ verwenden, andernfalls wird ein Fehler gemeldet:
[Err] 1093 – Das können Sie Es darf keine Zieltabelle „a_tmp“ für das Aktualisierungsdatum in der FROM-Klausel angegeben werden : Zeilen mit derselben ID und demselben Namen deduplizieren, d. h. Zeilen mit derselben ID und demselben Namen werden als doppelte Zeilen gezählt, Zeilen mit derselben ID und unterschiedlichen Namen werden als nicht doppelte Zeilen gezählt
Verwendungsmethode: und single Wenn die Felder ähnlich sind, wird im Allgemeinen der Primärschlüssel zum Vergleich verwendet, da der Wert des Primärschlüssels ein eindeutiger Wert sein muss.
Ergebnis:
Vorgang:
id name rowid 1 a 1 1 a 2 1 b 3 2 b 4 2 b 5 3 c 6 3 d 7Erster Typ:
id name rowid 1 a 1 1 b 3 2 b 4 3 c 6 3 d 7
Zweiter Typ:
Verbinden Sie die Werte der ID- und Namensfelder und fügen Sie sie in die temporäre Tabelle b_tmp ein, sodass Sie die [Zwischen]-Methode zum Löschen einzelner Felder verwenden können.
delete from a_tmp where (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) and rowid not in (select * from (select min(a.rowid) from a_tmp a group by a.id,a.name having count(a.id) >1) aa);# Fügen Sie den Wert der Zweifeldverbindung und das eindeutige Wertfeld in der a_tmp-Tabelle in die b_tmp-Tabelle ein
[Ultimate] Jede Zeile hat zwei Kopien davon gleiche Daten
Zum Beispiel:
insert into b_tmp select concat(id,name),rowid from a_tmp; #查出需要留下来的行 select id_name,max(rowid) from b_tmp group by id_name having count(id_name)>1; #使用【中级】的方法,或存储过程完成去重的工作Verwendung: Die Daten in der gesamten Zeile sind gleich und es gibt keine Möglichkeit, SQL-Anweisungen zum Löschen zu verwenden, da es keine Bedingung gibt Einschränkung, mit der eine Zeile verlassen und alle gleichen Daten gelöscht werden können. Es gibt keine unterschiedlichen Felder. Sie können selbst verschiedene Felder erstellen, das heißt: Fügen Sie ein Feld hinzu, stellen Sie es auf automatische Inkrementierung ein und legen Sie es als Primärschlüssel fest. Der obere Wert wird automatisch hinzugefügt.
Ergebnis:
Vorgang:
id name 1 a 1 a 1 b 1 b 2 c 2 c 3 c 3 c
Fügen Sie ein sich selbst vergrößerndes Feld hinzu und legen Sie es vorübergehend als Primärschlüssel fest.
id name rowid 1 a 1 1 b 3 2 c 5 3 c 7Verwenden Sie die oben genannten Methoden [Mittelstufe] und [Fortgeschritten].
Das obige ist der detaillierte Inhalt vonMySQL-Deduplizierungsmethode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!