Heim >Datenbank >MySQL-Tutorial >Wie lösche ich mit T-SQL effizient doppelte Datensätze in SQL Server?

Wie lösche ich mit T-SQL effizient doppelte Datensätze in SQL Server?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-12 11:57:43703Durchsuche

How to Efficiently Delete Duplicate Records in SQL Server Using T-SQL?

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!

Stellungnahme:
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