Heim  >  Artikel  >  Datenbank  >  So entfernen Sie doppelte Daten aus der MySQL-Datenbank

So entfernen Sie doppelte Daten aus der MySQL-Datenbank

coldplay.xixi
coldplay.xixiOriginal
2020-09-29 15:19:366402Durchsuche

So entfernen Sie doppelte Daten aus der MySQL-Datenbank: 1. Fragen Sie den zu löschenden Datensatz ab, und ein Datensatz wird beibehalten. 2. Löschen Sie den doppelten Datensatz, und nur ein Datensatz wird beibehalten aus test1 a, (...) als Gebot aus test1 c wo..].

So entfernen Sie doppelte Daten aus der MySQL-Datenbank

So entfernen Sie doppelte Daten aus der MySQL-Datenbank:

1. Fragen Sie den Datensatz ab, der gelöscht werden muss, und ein Datensatz wird beibehalten.

select a.id,a.subject,a.RECEIVER from test1 a left join (select c.subject,c.RECEIVER ,max(c.id) as bid from test1 c where status=0 GROUP BY RECEIVER,SUBJECT having count(1) >1) b on a.id< b.bid where a.subject=b.subject and a.RECEIVER = b.RECEIVER and a.id < b.bid

2. Löschen Sie doppelte Datensätze und behalten Sie nur einen Datensatz. Beachten Sie, dass subject,RECEIVER indiziert sein muss, da es sonst sehr langsam ist.

delete a from test1 a, (select c.subject,c.RECEIVER ,max(c.id) as bid from test1 c where status=0 GROUP BY RECEIVER,SUBJECT having count(1) >1) b where a.subject=b.subject and a.RECEIVER = b.RECEIVER and a.id < b.bid;

3. Doppelte Datensätze in der Tabelle werden anhand eines einzelnen Felds (peopleId) beurteilt ). Behalten Sie nur den Datensatz mit der kleinsten Zeilen-ID

select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

5. Löschen Sie die redundanten doppelten Datensätze (mehrere Felder) in der Tabelle und lassen Sie nur den Datensatz mit der kleinsten Zeilen-ID übrig Ein Befehl zum Abschließen dieser Sache scheint nicht offensichtlich zu sein, oder gehen wir ehrlich Schritt für Schritt damit um. Die Idee besteht darin, zuerst eine temporäre Tabelle zu erstellen und zu kopieren, dann die Daten in der temporären Tabelle zu vergleichen und die Daten darin zu löschen die Haupttabelle

delete from people where peopleId in (select peopleId from people group by peopleId  having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)

Weitere verwandte kostenlose Lernempfehlungen:

MySQL-Tutorial (Video)

Das obige ist der detaillierte Inhalt vonSo entfernen Sie doppelte Daten aus der MySQL-Datenbank. 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