Heim > Datenbank > MySQL-Tutorial > Wie kann ich doppelte Zeilen in T-SQL löschen und gleichzeitig eine Instanz behalten?

Wie kann ich doppelte Zeilen in T-SQL löschen und gleichzeitig eine Instanz behalten?

Patricia Arquette
Freigeben: 2025-01-15 16:09:44
Original
190 Leute haben es durchsucht

How Can I Delete Duplicate Rows in T-SQL While Keeping One Instance?

T-SQL: Löschen Sie redundante Zeilen und behalten Sie einzelne Zeilendatensätze bei

Die Aufrechterhaltung der Datenintegrität ist von entscheidender Bedeutung und die Beseitigung doppelter Zeilen ist ein entscheidender Schritt. In diesem Fall kam es aufgrund eines Dateneingabefehlers zu doppelten Datensätzen. Ihr Ziel ist es, diese redundanten Zeilen zu entfernen, aber Sie müssen präzise vorgehen und sicherstellen, dass Sie ein einzelnes Duplikat behalten.

Lösung: Verwenden Sie CTE und ROW_NUMBER()

In SQL 2005 oder höher können Sie einen allgemeinen Tabellenausdruck (CTE) mit der ROW_NUMBER() OVER-Klausel verwenden, um Ihre Ziele zu erreichen. Der CTE fungiert als Filter und isoliert relevante Daten, während die Funktion ROW_NUMBER() jeder Zeile in einer vordefinierten Partitionsgruppe (in diesem Fall der Schlüsselspalte) eine Sequenznummer zuweist.

Mit dieser Technik können Sie doppelte Zeilen basierend auf Ihren gewünschten Kriterien isolieren. Durch Anhängen einer WHERE-Klausel, die eine Bedingung enthält, die prüft, ob die Zeilennummer größer als 1 ist, können Sie die redundanten Zeilen lokalisieren und löschen.

Leistung

<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 FROM cte WHERE [rn] > 1</code>
Nach dem Login kopieren

Anpassungsoptionen

Die ORDER BY-Klausel im CTE bietet Flexibilität beim Sortieren von Zeilen. Wenn Ihr Ziel darin besteht, die neuesten Zeilen beizubehalten, ordnen Sie die Ergebnisse in absteigender Reihenfolge nach der relevanten Datums-/Uhrzeitspalte (z. B. ORDER BY [baz] DESC). Bedenken Sie, dass die Auswahl der Sortierkriterien vollständig an Ihre spezifischen Bedürfnisse angepasst werden kann.

Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Zeilen in T-SQL löschen und gleichzeitig eine Instanz behalten?. 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