Heim >Datenbank >MySQL-Tutorial >MySQL – Detaillierte Erläuterung der Methoden zum Abfragen/Löschen doppelter Datensätze
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
Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)
Select * From HZT Where ID In (Select Max(ID) From HZT Group By Title)
Hinweis: Der Datensatz mit der größten ID wird hier angezeigt
1. Löschen Sie alle doppelten Datensätze (mit Vorsicht verwenden)
Delete 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)
Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)
Hinweis: Der Datensatz mit der größten ID wird hier beibehalten
select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
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)
select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
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)
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)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
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 #Tmp2. 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!