Doppelte Zeilen ohne eindeutige ID entfernen
Wie können wir doppelte Zeilen entfernen, wenn die Tabelle keine eindeutigen Zeilenbezeichner enthält? Nehmen wir an, wir haben eine Tabelle mit den folgenden Daten:
<code>| col1 | col2 | col3 | col4 | col5 | col6 | col7 | |---|---|---|---|---|---|---| | john | 1 | 1 | 1 | 1 | 1 | 1 | | john | 1 | 1 | 1 | 1 | 1 | 1 | | sally | 2 | 2 | 2 | 2 | 2 | 2 | | sally | 2 | 2 | 2 | 2 | 2 | 2 |</code>
Unser Ziel ist es, doppelte Zeilen zu eliminieren und Folgendes zu hinterlassen:
<code>| col1 | col2 | col3 | col4 | col5 | col6 | col7 | |---|---|---|---|---|---|---| | john | 1 | 1 | 1 | 1 | 1 | 1 | | sally | 2 | 2 | 2 | 2 | 2 | 2 |</code>
Eine zuverlässige Möglichkeit, das Problem fehlender eindeutiger IDs zu vermeiden, ist die Verwendung allgemeiner Tabellenausdrücke (CTE) und der Funktion ROW_NUMBER(). Mit dieser Kombination können wir identifizieren, welche Zeilen gelöscht werden sollen:
<code class="language-sql">WITH CTE AS ( SELECT [col1], [col2], [col3], [col4], [col5], [col6], [col7], RN = ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col1) FROM dbo.Table1 ) DELETE FROM CTE WHERE RN > 1</code>
Lassen Sie uns diese Abfrage aufschlüsseln:
Hinweis: Die Ergebnisse, die Sie in Ihrem ursprünglichen Beitrag bereitstellen, können aufgrund möglicher Tippfehler variieren. Die obige Ausgabe stellt das erwartete Ergebnis dar.
Die Flexibilität dieser Technik ermöglicht die Einbeziehung mehrerer Spalten in die PARTITION BY-Klausel und ermöglicht so die Erkennung von Duplikaten basierend auf mehreren Kombinationen von Kriterien.
Das obige ist der detaillierte Inhalt vonWie lösche ich doppelte Zeilen in einer Tabelle ohne eindeutige ID?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!