Heim >Datenbank >MySQL-Tutorial >Wie lösche ich doppelte Datensätze in einer SQL-Tabelle ohne Primärschlüssel?

Wie lösche ich doppelte Datensätze in einer SQL-Tabelle ohne Primärschlüssel?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-03 13:03:43991Durchsuche

How to Delete Duplicate Records in a SQL Table Without a Primary Key?

Doppelte Datensätze in SQL-Tabelle ohne Primärschlüssel löschen

Wenn kein Primärschlüssel vorhanden ist, kann die Identifizierung doppelter Datensätze in einer Datenbank eine Herausforderung darstellen . Die Verwendung einer Kombination aus Fensterfunktionen und logischen Operatoren ermöglicht jedoch das effiziente Löschen von Duplikaten.

Im bereitgestellten Beispiel besteht das Ziel darin, Datensätze aus der Employee-Tabelle zu entfernen, die dieselben EmpId- und EmpSSN-Werte haben. Um dies zu erreichen:

  1. Erstellen Sie eine temporäre Spalte mit der Funktion ROW_NUMBER(), um jedem Datensatz basierend auf der Partitionierung nach den Feldern EmpId, EmpName und EmpSSN eine Anzahl zuzuweisen. Dadurch wird eine Tabelle erstellt, in der jede eindeutige Kombination eine eindeutige Anzahl hat.
ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
  1. Erstellen Sie eine Unterabfrage, die die Tabelle so filtert, dass sie nur Datensätze enthält, deren Anzahl größer als 1 ist, was auf doppelte Datensätze hinweist .
SELECT SUB FROM
(SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
FROM Employee) SUB
WHERE SUB.cnt > 1
  1. Verwenden Sie die DELETE-Anweisung, um die doppelten Datensätze aus der Employee-Tabelle basierend auf den Ergebnissen zu entfernen Unterabfrage.
DELETE SUB FROM (SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
FROM Employee) SUB
WHERE SUB.cnt > 1

Durch Befolgen dieser Schritte werden die doppelten Datensätze effektiv aus der Mitarbeitertabelle gelöscht, wodurch die Integrität der Daten sichergestellt wird, ohne dass ein Primärschlüssel erforderlich ist.

Das obige ist der detaillierte Inhalt vonWie lösche ich doppelte Datensätze in einer SQL-Tabelle ohne Primärschlüssel?. 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