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

Wie lösche ich doppelte Datensätze in SQL Server mit ROW_NUMBER()?

Patricia Arquette
Freigeben: 2025-01-12 12:01:46
Original
327 Leute haben es durchsucht

How to Delete Duplicate Records in SQL Server Using ROW_NUMBER()?

Datenintegrität: Entfernen doppelter Einträge in SQL Server

Die Aufrechterhaltung einer sauberen und effizienten Datenbank erfordert die regelmäßige Entfernung doppelter Datensätze. Dies ist für die Datenintegrität und optimale Datenbankleistung von entscheidender Bedeutung. Wenn identische Einträge vorhanden sind (z. B. mehrere Mitarbeiter mit demselben Namen), ist die Beseitigung von Redundanzen unerlässlich.

SQL Server bietet eine leistungsstarke Lösung mit Fensterfunktionen und DELETE-Anweisungen. Fensterfunktionen bieten die Möglichkeit, Berechnungen über verwandte Zeilen hinweg durchzuführen.

Zur Veranschaulichung betrachten wir das Löschen doppelter Einträge basierend auf der Spalte EmployeeName. Die Funktion ROW_NUMBER() weist jeder Zeile innerhalb einer Partition (Gruppe identischer EmployeeName-Werte) einen eindeutigen Rang zu. Dadurch können wir Duplikate gezielt löschen.

Hier ist die T-SQL-Abfrage:

<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>
Nach dem Login kopieren

Diese Abfrage funktioniert wie folgt: Eine Unterabfrage erstellt eine temporäre Tabelle und wendet ROW_NUMBER() an, partitioniert nach EmployeeName und geordnet nach empId. Dadurch wird jedem Mitarbeiternamen ein eindeutiger Rang (RN) zugewiesen, wobei Duplikate fortlaufend nummeriert werden.

Die DELETE-Anweisung zielt dann auf diese temporäre Tabelle (Alias ​​„x“) ab und entfernt alle Zeilen, in denen RN größer als 1 ist. Dadurch bleibt effektiv nur die erste Instanz jedes EmployeeName erhalten und alle nachfolgenden Duplikate werden gelöscht.

Überprüfung vor der Ausführung:

Bevor Sie die DELETE-Anweisung ausführen, ist es wichtig, ihre Auswirkungen zu überprüfen. Führen Sie diese SELECT-Anweisung aus:

<code class="language-sql">SELECT *
FROM (
    SELECT *, RN = ROW_NUMBER() OVER (PARTITION BY EmployeeName ORDER BY empId)
    FROM Employee
) x
WHERE RN > 1;</code>
Nach dem Login kopieren

Dadurch wird eine Vorschau der zum Löschen vorgesehenen Datensätze angezeigt. Sobald Sie die Richtigkeit bestätigt haben, führen Sie die DELETE-Anweisung aus, um die doppelten Datensätze dauerhaft aus der Employee-Tabelle zu entfernen.

Das obige ist der detaillierte Inhalt vonWie lösche ich doppelte Datensätze in SQL Server mit ROW_NUMBER()?. 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