Heim > Datenbank > MySQL-Tutorial > Wie lösche ich doppelte Zeilen in einer Tabelle ohne eindeutige ID?

Wie lösche ich doppelte Zeilen in einer Tabelle ohne eindeutige ID?

Barbara Streisand
Freigeben: 2025-01-23 01:47:09
Original
369 Leute haben es durchsucht

How to Delete Duplicate Rows in a Table Without a Unique ID?

Doppelte Zeilen ohne eindeutige ID entfernen

Wie können wir doppelte Zeilen entfernen, wenn die Tabelle keine eindeutigen Zeilenbezeichner enthält? Nehmen wir an, wir haben eine Tabelle mit den folgenden Daten:

<code>| col1 | col2 | col3 | col4 | col5 | col6 | col7 |
|---|---|---|---|---|---|---|
| john | 1 | 1 | 1 | 1 | 1 | 1 |
| john | 1 | 1 | 1 | 1 | 1 | 1 |
| sally | 2 | 2 | 2 | 2 | 2 | 2 |
| sally | 2 | 2 | 2 | 2 | 2 | 2 |</code>
Nach dem Login kopieren

Unser Ziel ist es, doppelte Zeilen zu eliminieren und Folgendes zu hinterlassen:

<code>| col1 | col2 | col3 | col4 | col5 | col6 | col7 |
|---|---|---|---|---|---|---|
| john | 1 | 1 | 1 | 1 | 1 | 1 |
| sally | 2 | 2 | 2 | 2 | 2 | 2 |</code>
Nach dem Login kopieren

Eine zuverlässige Möglichkeit, das Problem fehlender eindeutiger IDs zu vermeiden, ist die Verwendung allgemeiner Tabellenausdrücke (CTE) und der Funktion ROW_NUMBER(). Mit dieser Kombination können wir identifizieren, welche Zeilen gelöscht werden sollen:

<code class="language-sql">WITH CTE AS (
   SELECT [col1], [col2], [col3], [col4], [col5], [col6], [col7],
       RN = ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col1)
   FROM dbo.Table1
)
DELETE FROM CTE WHERE RN > 1</code>
Nach dem Login kopieren

Lassen Sie uns diese Abfrage aufschlüsseln:

  • Der CTE mit dem Namen „CTE“ verwendet die Funktion ROW_NUMBER(), um die Zeilennummer basierend auf jedem einzelnen Wert in der Spalte „col1“ zu berechnen, während er nach dieser Spalte partitioniert.
  • Die
  • DELETE-Anweisung löscht dann Zeilen mit einer Zeilennummer (RN) größer als 1 und entfernt dadurch alle doppelten Zeilen.

Hinweis: Die Ergebnisse, die Sie in Ihrem ursprünglichen Beitrag bereitstellen, können aufgrund möglicher Tippfehler variieren. Die obige Ausgabe stellt das erwartete Ergebnis dar.

Die Flexibilität dieser Technik ermöglicht die Einbeziehung mehrerer Spalten in die PARTITION BY-Klausel und ermöglicht so die Erkennung von Duplikaten basierend auf mehreren Kombinationen von Kriterien.

Das obige ist der detaillierte Inhalt vonWie lösche ich doppelte Zeilen in einer Tabelle ohne eindeutige ID?. 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