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

js, um Drag & Drop-Sortierdetails zu erreichen

Inhaltsverzeichnis 1. Einleitung 2. Umsetzung 3. ...

Docker-Cross-Server-Kommunikations-Overlay-Lösung (Teil 1) Consul-Einzelinstanz

Inhaltsverzeichnis Szenario Aufgabe Idee analysie...

Was ist dies in einer Punkt-für-Punkt-Reihe von JavaScript?

Verstehe das Vielleicht haben Sie this in anderen...

Problem beim Testen des nicht autorisierten Zugriffs auf Zookeeper

Inhaltsverzeichnis Vorwort Erkennen des geöffnete...

So implementieren Sie einen Kennwortstärke-Detektor in React

Inhaltsverzeichnis Vorwort verwenden Komponentens...

So verwenden Sie Vue+ElementUI Tree

Die Verwendung von Vue + ElementUI Tree dient zu ...

HTML+CSS zum Erstellen eines Dropdown-Menüs

1. Beispiel einer Dropdown-Liste Der Code lautet ...

Eine kurze Analyse der Zählverfolgung einer Anfrage in nginx

Lassen Sie mich zunächst die Anwendungsmethode er...

Flex-Anordnung in CSS darstellen (Layouttool)

In Bezug auf die Anzeige: flexibles Layout: Manch...

Webdesign-Tutorial (4): Über Materialien und Ausdrücke

<br />Vorheriges Webdesign-Tutorial: Webdesi...

So führen Sie ein Python-Skript auf Docker aus

Erstellen Sie zunächst ein spezielles Projektverz...

Ich habe ein paar coole Designseiten zusammengestellt, die ich gut finde.

Sie müssen Inspiration haben, um eine Website zu g...

MySQL-langsame Abfrage pt-query-digest Analyse des langsamen Abfrageprotokolls

1. Einleitung pt-query-digest ist ein Tool zum An...

base target="" gibt das Ziel des Basislinks zum Öffnen des Frames an

<base target=_blank> ändert den Zielrahmen d...