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.
SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num;
SELECT ID from (SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num) as T;
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);
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);
insert into users_copy1 select * from tmp_data;
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!