Heim > Datenbank > MySQL-Tutorial > Wie lösche ich effizient doppelte Zeilen in T-SQL basierend auf Schlüsselspalten?

Wie lösche ich effizient doppelte Zeilen in T-SQL basierend auf Schlüsselspalten?

Barbara Streisand
Freigeben: 2025-01-15 16:10:43
Original
316 Leute haben es durchsucht

How to Efficiently Delete Duplicate Rows in T-SQL Based on Key Columns?

Löschen Sie doppelte Zeilen in T-SQL basierend auf Primärschlüsselspalten effizient

Frage:

Aufgrund eines Fehlers bei der Datenerstellung enthält die Tabelle eine große Anzahl doppelter Zeilen. Das Ziel besteht darin, redundante Zeilen zu eliminieren und gleichzeitig eine Zeile für jede eindeutige Kombination von Primärschlüsselspalten beizubehalten. Allerdings enthält die Tabelle einige Spalten, die für die Frage nicht relevant sind und leicht unterschiedliche Daten enthalten und ignoriert werden müssen.

Lösung:

Für SQL Server 2005 und höher können Sie die Funktion OVER() und allgemeine Tabellenausdrücke (CTE) verwenden, um doppelte Zeilen effizient zu entfernen.

CTE- und DELETE-Anweisungen:

<code class="language-sql">WITH cte AS (
  SELECT [foo], [bar], 
     row_number() OVER(PARTITION BY foo, bar ORDER BY baz) AS [rn]
  FROM TABLE
)
DELETE cte WHERE [rn] > 1</code>
Nach dem Login kopieren

Anleitung:

  • CTE erstellt eine sortierte Teilmenge von Zeilen basierend auf den Spalten foo und bar.
  • Die ORDER BY baz-Klausel ist optional und ermöglicht die Reihenfolge innerhalb jeder Partition (Primärschlüsselspaltengruppe).
  • Die DELETE-Anweisung löscht alle Zeilen im CTE mit einem Rang größer als 1 und eliminiert so effektiv Duplikate, während für jede Primärschlüsselspaltenkombination eine Zeile erhalten bleibt.

Das obige ist der detaillierte Inhalt vonWie lösche ich effizient doppelte Zeilen in T-SQL basierend auf Schlüsselspalten?. 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