MySQL SQL-Anweisung zum Suchen doppelter Daten basierend auf einem oder mehreren Feldern

MySQL SQL-Anweisung zum Suchen doppelter Daten basierend auf einem oder mehreren Feldern

SQL findet alle doppelten Datensätze in einer Tabelle

1. Die Tabelle enthält zwei Felder: ID und Name. Suchen Sie alle Daten mit doppeltem Namen.

 select * from xi a where (a.username) in (wählen Sie Benutzernamen aus der xi-Gruppe nach Benutzernamen mit count(*) > 1)

2. Nachdem alle Daten gefunden und gruppiert wurden, werden zuerst die Abfragedaten der Anzahl der Wiederholungen der wiederholten Daten aufgelistet:

 select count(username) as 'Anzahl der Wiederholungen',username from xi group by username having count(*)>1 order by username desc

3. Um die Ergebnisse anderer Personen anzuzeigen, finden Sie hier die Methoden zum Abfragen und Löschen doppelter Datensätze:

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 Personen aus
wobei peopleId in (wählen Sie peopleId aus der Personengruppe nach peopleId mit count(peopleId) > 1)

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.

 aus Personen löschen 
wobei peopleId in (wählen Sie peopleId aus der Personengruppe nach peopleId mit count(peopleId) > 1)
und Rowid nicht in (wählen Sie min(Rowid) aus der Personengruppe nach PeopleId mit count(peopleId)>1)

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

 Wählen Sie * aus Lebenslauf a
wobei (a.peopleId,a.seq) in (wähle peopleId,seq aus der Vitae-Gruppe 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

 aus dem Lebenslauf löschen a
wobei (a.peopleId,a.seq) in (wähle peopleId,seq aus der Vitae-Gruppe nach peopleId,seq mit count(*) > 1)
und rowid nicht in (select 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ählen Sie * aus Lebenslauf a
wobei (a.peopleId,a.seq) in (wähle peopleId,seq aus der Vitae-Gruppe nach peopleId,seq mit count(*) > 1)
und rowid nicht in (select min(rowid) aus vitae-Gruppe nach peopleId,seq mit count(*)>1)

(zwei)

Zum Beispiel

In Tabelle A gibt es ein Feld „Name“.

Und der „Name“-Wert kann in verschiedenen Datensätzen derselbe sein.

Jetzt müssen wir unter den Datensätzen in der Tabelle die Elemente mit doppelten „Name“-Werten herausfinden.

 Wählen Sie Name,Anzahl(*) aus einer Gruppe nach Namen mit Anzahl(*) > 1 aus.

Bei gleichem Geschlecht ergeben sich folgende Ergebnisse:

 Wählen Sie Name, Geschlecht, Anzahl(*) aus einer Gruppe nach Name, Geschlecht mit Anzahl(*) > 1

(drei)

Methode 1

Deklarieren Sie @max Integer, @id Integer
Deklarieren Sie cur_rows Cursor lokal für 
Wählen Sie das Primärfeld „Anzahl(*)“ aus der Tabellennamengruppe nach dem Primärfeld mit „Anzahl(*)“ >;
öffne cur_rows, hole cur_rows in @id,@max, während @@fetch_status=0
beginnen
 wähle @max = @max -1
 Zeilenanzahl @max festlegen
 Löschen aus Tabellenname, wobei primäres Feld = @id
hole cur_rows in @id,@maxend
Schließen Sie cur_rows
setze Zeilenanzahl auf 0

Methode 2: Es gibt zwei Bedeutungen von doppelten Datensätzen: Eine sind vollständig doppelte Datensätze, das heißt Datensätze, bei denen alle Felder wiederholt werden; die andere sind Datensätze, bei denen einige Schlüsselfelder wiederholt werden, z. B. das Feld „Name“, während andere Felder möglicherweise nicht wiederholt werden oder alle Wiederholungen 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 die Tabelle doppelte Datensätze löschen muss (nur einen doppelten Datensatz behalten),

So können Sie es 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 Duplizierungsproblem muss normalerweise der erste Datensatz der doppelten Datensätze beibehalten werden. Die Vorgehensweise ist wie folgt: Angenommen, die doppelten Felder sind Name und Adresse, und Sie müssen 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

Die letzte Auswahl gibt einen Ergebnissatz mit eindeutigem Namen und Adresse zurück (aber mit einem zusätzlichen AutoID-Feld, das beim Schreiben in der Select-Klausel weggelassen werden kann).

(IV) Doppelte Abfrage

 Wählen Sie * aus Tabellenname, wobei die ID in (Wählen Sie die ID aus der Tabellennamengruppe nach ID mit count(id) > 1)

Suchen nach doppelten Datensätzen für ein Feld

Suchen Sie nach doppelten Datensätzen basierend auf dem Feld „sample_code“

SELECT * FROM tb_table WHERE Beispielcode IN( SELECT Beispielcode FROM tb_table GROUP BY Beispielcode HAVING COUNT(Beispielcode) > 1 );

Suchen Sie nach doppelten Datensätzen für mehrere Felder (hier nehmen wir 2 als Beispiel)

Suchen Sie nach doppelten Datensätzen basierend auf den Namens- und Codefeldern

SELECT * from (SELECT *, CONCAT(name,code) as nameAndCode from tb_table) t WHERE t.nameAndCode in 
(
 SELECT Name und Code aus (SELECT CONCAT(Name, Code) als Name und Code aus tb_table) tt GROUP BY Name und Code HAVING Anzahl(Name und Code) > 1
)

Zusammenfassen

Oben ist die MySQL SQL-Anweisung, die ich Ihnen vorgestellt habe, um doppelte Daten basierend auf einem oder mehreren Feldern zu finden. Ich hoffe, sie wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • Suchen Sie nach doppelten Datensätzen in der MySQL-Tabelle
  • Detaillierte Erklärung, wie man doppelte Daten in MySQL findet und löscht und nur ein Beispiel behält
  • So fragen Sie doppelte Daten in einer MySQL-Tabelle ab
  • Zusammenfassung der Methoden zum Löschen doppelter Daten in der MySQL-Datenbank
  • MySQL-Abfrage doppelter Daten (löschen Sie doppelte Daten und behalten Sie die Daten mit der kleinsten ID als einzige Daten)
  • Sehr umfassender MySQL-Code zur Handhabung doppelter Daten
  • Zusammenfassung der Methoden zum Löschen doppelter Datensätze in der MySQL-Datenbank [Empfohlen]
  • Teilen Sie die Methode zum Ignorieren doppelter Daten beim Einfügen von Daten in MySQL
  • MySQL verwendet UNIQUE, um das Einfügen nicht doppelter Daten zu implementieren
  • Ein praktischer Bericht über die Prüfung und Bearbeitung doppelter MySQL-Datensätze vor Ort

<<:  Wenn ein Linux (Ubuntu)-Benutzer N-mal hintereinander ein falsches Passwort eingibt, um sich anzumelden, wird das System automatisch für X Minuten gesperrt

>>:  js zur Realisierung der automatischen Sperrbildschirmfunktion

Artikel empfehlen

Sieben Prinzipien eines guten Designers (1): Schriftdesign

Nun, vielleicht sind Sie ein Design-Guru, oder vie...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.24

In diesem Artikel finden Sie das Installations-Tu...

Docker-Installation von MySQL (8 und 5.7)

In diesem Artikel wird die Verwendung von Docker ...

Vue.js implementiert das Neun-Raster-Bildanzeigemodul

Ich habe Vue.js verwendet, um ein Bildanzeigemodu...

Grafisches Tutorial zur Installation von Linux CentOS6.9 unter VMware

Als technischer Neuling zeichne ich den Vorgang d...

js, um einen einfachen Lupeneffekt zu erzielen

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

Datensatz zu langsamen MySQL-Abfragen und Abfragerekonstruktionsmethoden

Vorwort Was ist eine langsame Abfrage und wie kan...

Welche Funktion ist !-- -- im HTML-Seitenstil?

Hauptsächlich für Browser mit niedriger Version &l...

Eine kurze Analyse des Kimono-Memo-Problems

Heute musste ich nach dem Neustart des Spiels fes...

XHTML-Einführungstutorial: Textformatierung und Sonderzeichen

<br />Dieser Abschnitt stellt die Implementi...