Heim  >  Artikel  >  Datenbank  >  Datenbankdeduplizierung basierend auf angegebenen Feldern

Datenbankdeduplizierung basierend auf angegebenen Feldern

步履不停
步履不停Original
2019-06-19 13:14:597228Durchsuche

Datenbankdeduplizierung basierend auf angegebenen Feldern

Anforderungen: Entfernen Sie doppelte Daten aus einer Benutzertabelle basierend auf dem Feld „Name/E-Mail/Kartennummer“

Idee: Sie können die Methode „Gruppieren nach“ verwenden, um die „doppelten“ Daten abzufragen, die Daten in einer temporären Tabelle zu speichern und die Daten dann in der temporären Tabelle in der angegebenen Tabelle zu speichern.

Missverständnisse und Lösung : Die Methode „Gruppieren nach“ kann nur einige Felder abrufen (angegebene Felder ohne Duplikate) und nicht die vollständigen Daten auf einmal abrufen. Die ID in der Ergebnismenge „Gruppieren nach“ kann jedoch über die Max-Funktion abgerufen werden Alle Daten können basierend auf dem ID-Datensatz abgefragt werden.

Testideen

  • Fragen Sie die Daten nach der Deduplizierung ab

SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num;

  • Aus den Daten nach der Deduplizierung Holen Sie sich die ID-Satz von

SELECT ID from (SELECT max(id) as id,name,email,card_num FROM users  GROUP BY name,email,card_num) as T;

  • Rufen Sie den ID-Satz aus den deduplizierten Daten ab und rufen Sie die Datensatzliste aus den Quelldaten ab

SELECT * from users  where id in (SELECT ID from (SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num) as T);

Die eigentliche Methode

  • ruft den ID-Satz aus den deduplizierten Daten ab, ruft die Datensatzliste aus den Quelldaten ab und speichert die Listendaten in einer temporären Tabelle

create TEMP TABLE tmp_data as SELECT * from users where id in (SELECT ID from (SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num) as T);

  • Speichern Sie die Daten in der temporären Tabelle in der angegebenen Datentabelle und schließen Sie ab

insert into users_copy1 select * from tmp_data;

Überprüfen

  • Entspricht das Testergebnis der Gesamtzahl der Daten nach der Deduplizierung im ersten Schritt?

select count(*) from users_copy1;

Testergebnis : 2300 Daten werden unter den 1,4-W-Daten dupliziert. Das tatsächliche Laufergebnis beträgt 0,7 Sekunden, was im Wesentlichen den aktuellen Anforderungen entspricht.

Weitere technische Artikel zum Thema MySQL finden Sie in der Spalte MySQL-Tutorial.

Das obige ist der detaillierte Inhalt vonDatenbankdeduplizierung basierend auf angegebenen Feldern. 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