Eine vollständige Anleitung zum Abfragen und Löschen doppelter Datensätze in MySQL

Eine vollständige Anleitung zum Abfragen und Löschen doppelter Datensätze in MySQL

Vorwort

In diesem Artikel werden hauptsächlich die Methoden zum Abfragen und Löschen doppelter Datensätze in MySQL vorgestellt. Er wird zu Ihrer Information und zum Lernen weitergegeben. Werfen wir einen Blick auf die ausführliche Einführung:

Alle Datensätze mit doppelten Titeln finden:

Wählen Sie Titel, Anzahl(*) als Anzahl aus der Benutzertabelle, gruppieren Sie nach Titel mit Anzahl > 1;
SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Titel = a.Titel) > 1) ORDER BY Titel DESC

1. Suchen Sie nach doppelten Datensätzen

1. Alle doppelten Datensätze finden

SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Titel = a.Titel) > 1) ORDER BY Titel DESC

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

Wählen Sie * aus HZT, wobei ID in (Wählen Sie Max(ID) aus HZT nach Titel gruppieren)

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

2. Löschen Sie doppelte Datensätze

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

Tabelle löschen, in der sich die Felder wiederholen (Wiederholte Felder aus Tabelle auswählen, nach wiederholten Feldern gruppieren, deren Anzahl(*)>1 ist)

2. Behalten Sie eines (das dürfte das sein, was die meisten Leute brauchen^_^)

HZT löschen, bei denen die ID nicht vorhanden ist (Max. (ID) aus HZT-Gruppe nach Titel auswählen)

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

3. Beispiele

1. Suchen Sie in der Tabelle nach redundanten doppelten Datensätzen. Doppelte Datensätze werden anhand eines einzigen Felds (peopleId) ermittelt.

Wählen Sie * aus den Personen, bei denen die Personen-ID in (Wählen Sie die Personen-ID aus der Personengruppe nach Personen-ID mit der Anzahl (Personen-ID) > 1) ist.

2. Löschen Sie redundante doppelte Datensätze in der Tabelle. Doppelte Datensätze werden anhand eines einzelnen Felds (peopleId) ermittelt. Nur der Datensatz mit der kleinsten Zeilen-ID wird beibehalten.

Löschen aus Personen, bei denen die Personen-ID enthalten ist (Wählen Sie die Personen-ID aus der Personengruppe nach Personen-ID mit der Anzahl (Personen-ID) > 1) und die Zeilen-ID nicht enthalten ist (Wählen Sie min (Zeilen-ID) aus der Personengruppe nach Personen-ID mit der Anzahl (Personen-ID) > 1).

3. Suchen Sie nach redundanten doppelten Datensätzen in der Tabelle (mehrere Felder).

wähle * aus Lebenslauf a, wobei (a.peopleId,a.seq) in (wähle peopleId,seq aus Lebenslauf, gruppiere nach peopleId,seq mit count(*) > 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

lösche aus vitae a, wobei (a.peopleId,a.seq) in (wähle peopleId,seq aus vitae-Gruppe nach peopleId,seq mit count(*) > 1) und rowid nicht in (wähle min(rowid) aus vitae-Gruppe nach peopleId,seq mit count(*)>1)

5. Suchen Sie redundante doppelte Datensätze (mehrere Felder) in der Tabelle, ausgenommen den Datensatz mit der kleinsten Zeilen-ID

wähle * aus Lebenslauf a, wobei (a.peopleId,a.seq) in (wähle peopleId,seq aus Lebenslauf, gruppiere nach peopleId,seq mit count(*) > 1) und rowid nicht in (wähle min(rowid) aus Lebenslauf, gruppiere nach peopleId,seq mit count(*)>1)

4. Ergänzung

Es gibt mehr als zwei doppelte Datensätze. Einer ist ein vollständig doppelter Datensatz, d. h. ein Datensatz, bei dem alle Felder doppelt vorhanden sind. Der andere ist ein Datensatz, bei dem einige Schlüsselfelder doppelt vorhanden sind, z. B. ist das Feld „Name“ doppelt vorhanden, während andere Felder möglicherweise nicht doppelt vorhanden sind oder doppelt vorhanden sind und ignoriert werden können.

1. Für die erste Art der Wiederholung ist es einfacher zu lösen. Verwenden Sie

Wählen Sie ein eindeutiges * aus Tabellenname aus.

Sie können einen Ergebnissatz ohne doppelte Datensätze erhalten.

Wenn in der Tabelle doppelte Datensätze gelöscht werden müssen (nur ein doppelter Datensatz beibehalten werden soll), können Sie ihn wie folgt löschen:

Wählen Sie ein eindeutiges * in #Tmp aus Tabellenname aus.
Tabelle Tabellenname löschen
Wählen Sie * in Tabellenname aus #Tmp
Tabelle löschen #Tmp

Diese Duplizierung tritt aufgrund eines schlechten Tabellendesigns auf und kann durch das Hinzufügen einer eindeutigen Indexspalte behoben werden.

2. Bei dieser Art von Duplikatsproblem muss normalerweise der erste Datensatz der Duplikatsaufzeichnungen beibehalten werden. Die Vorgehensweise ist wie folgt

Angenommen, es gibt wiederholte Felder mit den Namen „Name“ und „Adresse“ und Sie möchten für diese beiden Felder einen eindeutigen Ergebnissatz erhalten.

Wählen Sie Identität (int, 1,1) als Auto-ID, * in #Tmp aus Tabellenname
Wählen Sie min(autoID) als AutoID in #Tmp2 aus der #Tmp-Gruppe nach Name, AutoID
wähle * aus #Tmp, wobei autoID in (wähle autoID aus #tmp2) ist

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels Ihnen bei Ihrem Studium oder Ihrer Arbeit helfen kann. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • So fragen Sie in MySQL nach dem Zufallsprinzip mehrere Daten ab
  • So fragen Sie doppelte Daten in einer MySQL-Tabelle ab
  • MySQL-Abfrageanweisung von Zeile zu Zeile
  • Kontinuierliche Aufzeichnungsmethode für MySQL-Abfragen

<<:  Detaillierte Erläuterung der Nest.js-Parametervalidierung und des benutzerdefinierten Rückgabedatenformats

>>:  So installieren Sie Git unter Linux

Artikel empfehlen

Detaillierte Erklärung der langsamen Remote-Verbindung von Navicat zu MySQL

Die endgültige Lösung ist im letzten Bild Wenn Si...

Eine kurze Diskussion über Schreibregeln für Docker Compose

Dieser Artikel stellt nichts im Zusammenhang mit ...

MySQL-FAQ-Serie: Wann werden temporäre Tabellen verwendet?

Einführung in temporäre Tabellen Was ist eine tem...

Lösungen für den Fehler und die Ungültigkeit beim Öffnen von nginx.pid

Inhaltsverzeichnis 1. Problembeschreibung 2. Prob...

Vue realisiert problemlos Wasserzeicheneffekte

Vorwort: Verwenden Sie den Wasserzeicheneffekt im...

Methoden für JavaScript-String-Objekte

Inhaltsverzeichnis Methoden des String-Objekts Me...

Vue2.0 implementiert adaptive Auflösung

In diesem Artikel wird der spezifische Code von V...

So stellen Sie Confluence und Jira-Software in Docker bereit

Version: centos==7.2 jdk==1.8 Zusammenfluss == 6....

Fallstudie zum JavaScript DOMContentLoaded-Ereignis

DOMContentLoaded-Ereignis Es wird buchstäblich au...

VMware Workstation ist nicht mit Device/Credential Guard kompatibel

Beim Installieren einer virtuellen Maschine wird ...