Heim > Datenbank > MySQL-Tutorial > Wie lösche ich doppelte Zeilen in SQL Server ohne einen eindeutigen Schlüssel?

Wie lösche ich doppelte Zeilen in SQL Server ohne einen eindeutigen Schlüssel?

Susan Sarandon
Freigeben: 2025-01-23 01:51:09
Original
906 Leute haben es durchsucht

How to Delete Duplicate Rows in SQL Server Without a Unique Key?

Effizientes Entfernen doppelter Zeilen in SQL Server: Ein CTE-Ansatz

Beim Umgang mit SQL Server-Tabellen ohne eindeutigen Schlüssel erfordert die Beseitigung doppelter Zeilen einen strategischen Ansatz. Dies kann mithilfe allgemeiner Tabellenausdrücke (Common Table Expressions, CTEs) in Verbindung mit der Funktion ROW_NUMBER() effektiv erreicht werden.

Hier ist eine Lösung, die diese Technik demonstriert:

<code class="language-sql">WITH RowNumberedRows AS (
   SELECT [col1], [col2], [col3], [col4], [col5], [col6], [col7],
       RN = ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col1)
   FROM dbo.Table1
)
DELETE FROM RowNumberedRows
WHERE RN > 1;</code>
Nach dem Login kopieren

Detaillierte Erklärung:

Der CTE mit dem treffenden Namen RowNumberedRows weist jeder Zeile in der Tabelle eine eindeutige Zeilennummer (RN) zu. Die Funktion ROW_NUMBER() partitioniert die Zeilen basierend auf der Spalte col1 und weist innerhalb jeder Partition fortlaufende Nummern zu. Dadurch wird sichergestellt, dass das erste Vorkommen jeder Duplikatgruppe einen RN von 1 erhält.

Die DELETE-Anweisung zielt dann auf den CTE ab und entfernt alle Zeilen, in denen RN größer als 1 ist. Dadurch bleibt nur die erste Zeile jedes Duplikatsatzes übrig, wodurch die Duplikate effektiv entfernt werden.

Beispiel:

Das Anwenden dieser Abfrage auf Beispieldaten führt zu folgendem Ergebnis:

COL1 COL2 COL3 COL4 COL5 COL6 COL7
john 1 1 1 1 1 1
sally 2 2 2 2 2 2

Beachten Sie, dass die doppelte Zeile „John“ erfolgreich entfernt wurde.

Die Anpassungsfähigkeit dieser Methode ist bemerkenswert. Durch Anpassen der Partitionierungsspalten innerhalb der Funktion ROW_NUMBER() (z. B. PARTITION BY col1, col2) können Sie nach Bedarf Eindeutigkeit basierend auf mehreren Spalten definieren.

Das obige ist der detaillierte Inhalt vonWie lösche ich doppelte Zeilen in SQL Server ohne einen eindeutigen Schlüssel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage