Löschen doppelter Datensätze ohne Primärschlüssel in SQL
Doppelte Datensätze können Probleme bei der Datenintegrität darstellen und zu ungenauen Ergebnissen und Dateninkonsistenzen führen. In Situationen, in denen einer Tabelle ein Primärschlüssel fehlt, kann das Identifizieren und Entfernen doppelter Datensätze komplexer sein.
Wenn kein Primärschlüssel vorhanden ist, besteht ein Ansatz zur Beseitigung doppelter Datensätze darin, diejenigen mit übereinstimmenden Werten in bestimmten Feldern zu identifizieren B. eine Mitarbeiter-ID und eine Sozialversicherungsnummer. Um dies zu erreichen, kann eine Unterabfrage verwendet werden, um die Tabelle basierend auf den gewünschten Kriterien zu partitionieren und jedem Datensatz eine fortlaufende Nummer zuzuweisen.
Die DELETE-Anweisung kann dann verwendet werden, um Datensätze mit doppelten Feldwerten durch Filtern zu löschen diejenigen mit einer Zeilennummer größer als 1. Dadurch wird sichergestellt, dass nur das erste Vorkommen jedes eindeutigen Wertesatzes beibehalten wird.
Beachten Sie die folgende SQL Abfrage:
DELETE SUB FROM (SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt FROM Employee) SUB WHERE SUB.cnt > 1
In dieser Abfrage berechnet die Unterabfrage die Zeilennummer für jeden Datensatz, aufgeteilt nach den Feldern EmpId, EmpName und EmpSSN. Die ORDER BY-Klausel stellt sicher, dass die Zeilennummer sequenziell vergeben wird. Die DELETE-Anweisung entfernt dann alle Datensätze mit einer Zeilennummer größer als 1, wodurch Duplikate effektiv gelöscht werden.
Das obige ist der detaillierte Inhalt vonWie lösche ich doppelte Datensätze in SQL-Tabellen ohne Primärschlüssel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!