Heim >Datenbank >MySQL-Tutorial >Wie lösche ich mit T-SQL effizient doppelte Datensätze in SQL Server?
Doppelte Zeilen in SQL Server mit T-SQL entfernen
Diese Anleitung zeigt, wie Sie mit T-SQL effektiv doppelte Zeilen aus einer SQL Server-Tabelle entfernen und sich dabei auf eine bestimmte Spalte konzentrieren. Nehmen wir als Beispiel die Employee
-Tabelle mit einer EmployeeName
-Spalte. Das Ziel besteht darin, nur eine Instanz jedes eindeutigen Mitarbeiternamens beizubehalten.
Eine robuste Methode nutzt Fensterfunktionen. Die folgende Abfrage erreicht dies:
<code class="language-sql">DELETE x FROM ( SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY EmployeeName ORDER BY empId) FROM Employee ) x WHERE rn > 1;</code>
Diese Abfrage verwendet ROW_NUMBER()
, um jeder Zeile innerhalb jeder Gruppe (Partition) identischer EmployeeName
-Werte einen eindeutigen Rang zuzuweisen. Die PARTITION BY EmployeeName
-Klausel gruppiert die Zeilen und ORDER BY empId
bestimmt die Rangfolge innerhalb jeder Gruppe (vorausgesetzt, empId
ist ein eindeutiger Bezeichner). rn
stellt den Rang dar.
Die WHERE rn > 1
-Klausel zielt auf Zeilen mit einem Rang größer als 1 innerhalb jeder Gruppe ab und löscht effektiv alle Duplikate mit Ausnahme des ersten Vorkommens (das einen Rang von 1 hat).
Bevor Sie die DELETE
-Anweisung ausführen, ist es wichtig, eine Vorschau der betroffenen Zeilen anzuzeigen. Ersetzen Sie DELETE
durch SELECT
, um Folgendes zu erreichen:
<code class="language-sql">SELECT * FROM ( SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY EmployeeName ORDER BY empId) FROM Employee ) x WHERE rn > 1;</code>
Dies ermöglicht eine Überprüfung, bevor Daten dauerhaft entfernt werden.
Das obige ist der detaillierte Inhalt vonWie lösche ich mit T-SQL effizient doppelte Datensätze in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!