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

Vue+SSH-Framework zur Realisierung von Online-Chat

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

Mehrere allgemeine Beispielcodes für Weiterleitungsverbindungen in HTML

Code kopieren Der Code lautet wie folgt: window.l...

Detailliertes Tutorial zum Erstellen eines Gitlab-Servers auf CentOS8.1

Über den Unterschied zwischen Gitlab und Github m...

5 häufig verwendete Objekte in JavaScript

Inhaltsverzeichnis 1. JavaScript-Objekte 1).Array...

Gegenseitiger Wertetransfer und Aufruf von Vue-Eltern-Kind-Komponenten

Inhaltsverzeichnis 1. Übergeordnetes Element über...

Vue implementiert die Bottom-Query-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

Eine kurze Analyse der expliziten Typkonvertierung von MySQL

CAST-Funktion Im vorherigen Artikel haben wir die...

Verstehen Sie kurz die MySQL-Datenbankoptimierungsphase

Einführung Haben Sie schon einmal eine Situation ...

Eine kurze Erläuterung des Sperrbereichs der MySQL-Next-Key-Sperre

Vorwort Eines Tages wurde ich plötzlich nach der ...

Lösen Sie das Problem von secure_file_priv null

Fügen Sie secure_file_priv = ' '; führen ...

Detaillierte Erklärung von Softlinks und Hardlinks in Linux

Inhaltsverzeichnis 1. Grundlegende Speicherung vo...

So verwenden Sie den Nginx-Proxy zum Surfen im Internet

Normalerweise verwende ich nginx als Reverse-Prox...