Heim > Datenbank > MySQL-Tutorial > Hauptteil

Eine vollständige Liste der Methoden zum Abfragen und Löschen doppelter Datensätze in MySQL

青灯夜游
Freigeben: 2019-11-26 09:23:23
nach vorne
2476 Leute haben es durchsucht

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.

Eine vollständige Liste der Methoden zum Abfragen und Löschen doppelter Datensätze in MySQL

Alle Datensätze mit doppelten Titeln finden:

select title,count(*) as count from user_table group by title having count>1;
Nach dem Login kopieren
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
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

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)
Nach dem Login kopieren

2, behalten Sie einen Datensatz (das sollte das sein, was die meisten Leute brauchen^_^)

Delete 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)
Nach dem Login kopieren

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 übrig

Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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 Sie

rrree

, 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öschen

delete 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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

Zusammenfassung

Das Obige ist der gesamte Inhalt dieses Artikels kann jedem beim Lernen oder bei der Arbeit helfen

Empfohlenes Lernen:

MySQL-Tutorial

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!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage