Heim > Datenbank > MySQL-Tutorial > Wie entferne ich doppelte Zeilen aus einer SQL-Tabelle ohne Primärschlüssel?

Wie entferne ich doppelte Zeilen aus einer SQL-Tabelle ohne Primärschlüssel?

Linda Hamilton
Freigeben: 2025-01-03 02:35:39
Original
348 Leute haben es durchsucht

How to Remove Duplicate Rows from a SQL Table Without a Primary Key?

So löschen Sie doppelte Datensätze aus einer SQL-Tabelle ohne Primärschlüssel

Beim Umgang mit SQL-Tabellen, denen ein Primärschlüssel fehlt, geht es um den Umgang mit Duplikaten Aufzeichnungen können eine Herausforderung darstellen. Es gibt jedoch effiziente Methoden, um Duplikate basierend auf bestimmten Kriterien zu entfernen.

Stellen Sie sich das folgende Szenario vor: Sie haben eine Tabelle „Mitarbeiter“ mit den Spalten „EmpId“, „EmpName“ und „EmpSSN“ sowie einigen Datensätzen doppelte Werte in den Feldern „EmpId“ und „EmpSSN“ enthalten. Um diese Duplikate zu entfernen, können Sie die folgende Abfrage verwenden:

DELETE SUB FROM
(SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
 FROM employee) SUB
WHERE SUB.cnt > 1
Nach dem Login kopieren

Verstehen der Abfrage:

  • Die äußere DELETE-Anweisung entfernt Zeilen aus dem 'employee ' Tabelle basierend auf Informationen, die aus der Unterabfrage abgerufen wurden.
  • Die Unterabfrage berechnet eine Zeilenanzahl (cnt) für jede eindeutige Kombination aus „EmpId“, „EmpName“ und „EmpSSN“.
  • Die PARTITION BY-Klausel gruppiert Datensätze nach diesen Feldern, um sicherzustellen, dass die Zeilenanzahl für jede einzelne Gruppe zurückgesetzt wird.
  • Die ORDER BY-Klausel sortiert Datensätze innerhalb jeder Gruppe, um sicherzustellen, dass die erste Zeile der ursprüngliche Datensatz ist.
  • Die WHERE-Klausel in der Unterabfrage filtert Zeilen heraus mit einem cnt größer als 1, was darauf hinweist, dass es sich um Duplikate handelt.
  • Die äußere DELETE-Anweisung verwendet dann die FROM-Klausel, um die Unterabfrage als virtuelle Tabelle (SUB) zu referenzieren, und löscht diese Zeilen aus dem Haupt-„Mitarbeiter“. Tabelle.

Diese Abfrage entfernt effektiv doppelte Datensätze basierend auf der eindeutigen Kombination von „EmpId“ und „EmpSSN“ und führt so eine effiziente Datenverarbeitung durch Bereinigung in Tabellen ohne Primärschlüssel.

Das obige ist der detaillierte Inhalt vonWie entferne ich doppelte Zeilen aus einer SQL-Tabelle ohne Primärschlüssel?. 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