MySQL-Tabellen enthalten oft doppelte Datensätze, die die Datenbank überladen und die Datenintegrität gefährden können. Das Löschen dieser Duplikate ist für die Aufrechterhaltung der Datengenauigkeit und die Verbesserung der Abfrageleistung von entscheidender Bedeutung. In diesem Artikel wird ein effizienter Ansatz zum Entfernen doppelter Datensätze ohne Verwendung temporärer Tabellen untersucht.
Die einfachste Methode besteht darin, einen eindeutigen Index für die Spalten zu erstellen, die die Eindeutigkeit in der Tabelle definieren. Für die TableA-Tabelle stellt der folgende Index sicher, dass die Kombination aus Mitglieds-ID, Quiz-Nummer, Frage-Nummer und Antwort-Nummer eindeutig ist:
ALTER IGNORE TABLE `TableA` ADD UNIQUE INDEX (`member_id`, `quiz_num`, `question_num`, `answer_num`);
Sobald der Index erstellt ist, behält MySQL automatisch seine Integrität bei und verhindert so die Entstehung doppelter Datensätze eingefügt.
Alternativ kann auch das Hinzufügen eines Primärschlüssels zur Tabelle erfolgen verhindert doppelte Einfügungen. Die folgende Abfrage löscht doppelte Datensätze basierend auf dem Primärschlüssel:
DELETE FROM member WHERE id IN ( SELECT * FROM ( SELECT id FROM member GROUP BY member_id, quiz_num, question_num, answer_num HAVING (COUNT(*) > 1) ) AS A );
Die DELETE-Anweisung entfernt Datensätze basierend auf der ID-Spalte und stellt so sicher, dass nur ein Datensatz mit derselben eindeutigen Spaltenkombination übrig bleibt.
Das obige ist der detaillierte Inhalt vonWie entferne ich doppelte Zeilen aus MySQL-Tabellen, ohne temporäre Tabellen zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!