Dieser Artikel stellt Ihnen hauptsächlich die Methoden zum Abfragen und Löschen doppelter Datensätze in MySQL vor und stellt sie Ihnen als Referenz und zum Studium zur Verfügung. Werfen wir einen Blick auf die detaillierte Einführung.
Alle Datensätze mit doppelten Titeln finden:
select title,count(*) as count from user_table group by title having count>1;rrree
1. Doppelte Datensätze suchen
1. Alle doppelten Datensätze finden
SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC
2. Duplikate Datensätze filtern (nur einen anzeigen)
SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC
Hinweis: Der Datensatz mit der größten ID ist hier angezeigt
2. Löschen Sie doppelte Datensätze
1. Löschen Sie alle doppelten Datensätze (mit Vorsicht verwenden)
Select * From HZT Where ID In (Select Max(ID) From HZT Group By Title)
2, behalten Sie einen Datensatz (das sollte das sein, was die meisten Leute brauchen^_^)
Delete 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)
Hinweis: Bewahren Sie den Datensatz mit der größten ID hier auf
3. Beispiel
1. Die doppelten Datensätze werden anhand eines einzelnen Felds (peopleId) beurteilt.
Löschen Sie die Redundante doppelte Datensätze in der Tabelle, doppelte Datensätze werden anhand eines einzelnen Felds (peopleId) beurteilt und nur der Datensatz mit der kleinsten Zeilen-ID bleibt übrigDelete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)3. Suchen Sie nach redundanten doppelten Datensätzen (mehrere Felder) in der Tabelle Nachschlagetabelle
select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)4. Löschen Sie redundante doppelte Datensätze (mehrere Felder) in der Tabelle und lassen Sie nur den Datensatz mit der kleinsten Zeilen-ID übrig
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)5. Suchen Sie nach den redundanten doppelten Datensätzen ( mehrere Felder) in der Tabelle, mit Ausnahme des Datensatzes mit der kleinsten Zeilen-ID. Datensatz
select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4. Ergänzung
hat mehr als zwei doppelte Datensätze. Einer ist ein vollständig doppelter Datensatz , das heißt, ein Datensatz, bei dem alle Felder wiederholt werden, und der andere ist ein teilweiser Datensatz mit wiederholten Schlüsselfeldern, wie z. B. wiederholten Namensfeldern, aber andere Felder dürfen nicht wiederholt werden oder können ignoriert werden. 1. Die erste Art der Duplizierung ist relativ einfach zu lösen. Verwenden Sierrree
, um eine Ergebnismenge ohne doppelte Datensätze zu erhalten. Wenn die Tabelle doppelte Datensätze löschen muss (wobei 1 doppelter Datensatz erhalten bleibt), können Sie ihn wie folgt löschendelete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)Der Grund für diese Duplizierung ist ein schlechtes Tabellendesign. Das Hinzufügen einer eindeutigen Indexspalte kann erforderlich sein gelöst. 2. Diese Art von Duplizierungsproblem erfordert normalerweise die Beibehaltung des ersten Datensatzes unter den doppelten Datensätzen. Die Vorgehensweise ist wie folgt: Gehen Sie davon aus, dass es doppelte Felder mit den Namen „Name“ und „Adresse“ gibt Erforderlich, um die Einzigartigkeit dieser beiden Felder zu erhalten
select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
Zusammenfassung
Das Obige ist der gesamte Inhalt dieses Artikels kann jedem beim Lernen oder bei der Arbeit helfenEmpfohlenes Lernen:Das obige ist der detaillierte Inhalt vonEine vollständige Liste der Methoden zum Abfragen und Löschen doppelter Datensätze in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!