Heim > Datenbank > MySQL-Tutorial > Hauptteil

MySQL – Detaillierte Erläuterung der Methoden zum Abfragen/Löschen doppelter Datensätze

黄舟
Freigeben: 2017-03-13 13:34:16
Original
1579 Leute haben es durchsucht

Alle Datensätze mit doppelten Titeln suchen:

SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC
Nach dem Login kopieren

1. Doppelte Datensätze suchen

1. Alle doppelten Datensätze suchen

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

2. Filtern Sie doppelte Datensätze (nur einer wird angezeigt)

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

Hinweis: Der Datensatz mit der größten ID wird hier angezeigt

2. LöschenDoppelte Datensätze

1. Löschen Sie alle doppelten Datensätze (mit Vorsicht verwenden)

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

2. Behalten Sie einen (das sollte die meisten Leute brauchen^_^)

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

Hinweis: Der Datensatz mit der größten ID wird hier beibehalten

3. Die doppelten Datensätze in der Tabelle werden anhand eines einzelnen Felds beurteilt. peopleId)


2. Löschen Sie redundante doppelte Datensätze in der Tabelle. Doppelte Datensätze werden anhand eines einzelnen Felds (peopleId) beurteilt, wobei nur der Datensatz mit der kleinsten Zeilen-ID übrig bleibt
select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
Nach dem Login kopieren


3 , Suchen Sie nach redundanten doppelten Datensätzen (mehrere Felder) in der Tabelle
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


4. Löschen Sie redundante doppelte Datensätze (mehrere Felder) in der Tabelle und lassen Sie nur die übrig Datensatz mit der kleinsten Zeilen-ID
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

5. Redundante doppelte Datensätze (mehrere Felder) in der Nachschlagetabelle, mit Ausnahme des Datensatzes mit der kleinsten Zeilen-ID

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

4

Es gibt mehr als zwei doppelte Datensätze, darunter: erstens vollständig doppelte Datensätze, d. h. Datensätze, in denen alle Felder wiederholt werden; zweitens Datensätze, in denen einige Schlüsselfelder wiederholt werden, z nicht unbedingt wiederholt oder kann ignoriert werden.
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
1. Die erste Art der Duplizierung ist relativ einfach zu lösen. Verwenden Sie

, um eine Ergebnismenge ohne doppelte Datensätze zu erhalten.
Wenn die Tabelle doppelte Datensätze löschen muss (ein doppelter Datensatz bleibt erhalten), können Sie ihn wie folgt löschen

select distinct * from tableName
Nach dem Login kopieren


Der Grund für diese Duplizierung ist ein schlechtes Tabellendesign. Dies kann sein gelöst durch Hinzufügen einer eindeutigen Spalte
index

.
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
Nach dem Login kopieren
2. Diese Art von Duplizierungsproblem erfordert normalerweise die Beibehaltung des ersten Datensatzes unter den doppelten Datensätzen. Die Vorgehensweise ist wie folgt:

Angenommen, es gibt doppelte Felder wie Name und Adresse, und es ist erforderlich, den eindeutigen Ergebnissatz zu erhalten dieser beiden Felder

Das obige ist der detaillierte Inhalt vonMySQL – Detaillierte Erläuterung der Methoden zum Abfragen/Löschen doppelter Datensätze. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!