Heim  >  Artikel  >  Datenbank  >  MySQL-Deduplizierungsmethode

MySQL-Deduplizierungsmethode

怪我咯
怪我咯Original
2017-07-06 11:25:482764Durchsuche

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     7
Erster 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       7
Verwenden 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn