Heim >Datenbank >MySQL-Tutorial >Wie finde ich in SQL exakte doppelte Datensätze über mehrere Spalten hinweg?
Doppelte Werte in mehreren Spalten finden
In Ihrem SQL-Code versuchen Sie, doppelte Datensätze anhand bestimmter Kriterien zu identifizieren. Um dies zu erreichen, können Sie eine Kombination aus Gruppierung und bedingter Filterung verwenden.
Das von Ihnen bereitgestellte Beispiel zielt darauf ab, doppelte Datensätze zu finden, die sowohl mit der Namens- als auch der Stadtspalte übereinstimmen. Allerdings weist Ihre ursprüngliche Abfrage ein kleines Problem auf: Sie umfasst auch Datensätze, bei denen nur der Name oder die Stadt übereinstimmt, anstatt dass eine genaue Übereinstimmung für beide erforderlich ist.
Um dieses Problem zu beheben, können Sie die Abfrage wie folgt ändern:
SELECT s.id, t.* FROM [stuff] s JOIN ( SELECT name, city, COUNT(*) AS qty FROM [stuff] GROUP BY name, city HAVING COUNT(*) > 1 ) t ON s.name = t.name AND s.city = t.city
Diese Abfrage verknüpft die Tabelle [stuff] mit einer Unterabfrage, die die Anzahl doppelter Datensätze für jedes eindeutige Paar aus Namens- und Stadtwerten berechnet. Indem Sie die HAVING-Klausel so festlegen, dass sie nur Gruppen mit einer Anzahl größer als 1 umfasst, können Sie die Ergebnisse auf Zeilen beschränken, die tatsächliche Duplikate darstellen.
Die Ausgabe dieser Abfrage sollte Ihrem gewünschten Ergebnis entsprechen:
id | name | city |
---|---|---|
904834 | jim | London |
904835 | jim | London |
90145 | Fred | Paris |
90132 | Fred | Paris |
90133 | Fred | Paris |
Das obige ist der detaillierte Inhalt vonWie finde ich in SQL exakte doppelte Datensätze über mehrere Spalten hinweg?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!