Heim >Datenbank >MySQL-Tutorial >Wie kann ich doppelte Datensätze effizient aus einer MySQL-Tabelle entfernen, ohne temporäre Tabellen zu verwenden?
Effizientes Entfernen doppelter Datensätze in MySQL ohne temporäre Tabellen
Das Entdecken doppelter Datensätze in einer Datenbank kann eine Herausforderung sein, insbesondere ohne Primärschlüssel . Es gibt jedoch wirksame Techniken, um dieses Problem anzugehen.
In unserem Fall haben wir eine Tabelle namens TableA, die Benutzerantworten auf Fragebögen enthält. Aufgrund eines versehentlichen Fehlers haben einige Benutzer doppelte Antworten übermittelt. Unser Ziel ist es, diese Duplikate zu entfernen und gleichzeitig sicherzustellen, dass eine verbleibende Zeile bestehen bleibt.
Lösung 1: Eindeutiger Index
Ein Ansatz besteht darin, einen eindeutigen Index für die relevanten Spalten hinzuzufügen in TabelleA. Dadurch wird die Eindeutigkeit dieser Felder erzwungen und das Einfügen zusätzlicher Duplikate verhindert.
Um dies zu erreichen, führen Sie die folgende Abfrage aus:
ALTER IGNORE TABLE `TableA` ADD UNIQUE INDEX (`member_id`, `quiz_num`, `question_num`, `answer_num`);
Lösung 2: Primärschlüssel und Löschung
Alternativ können wir einen Primärschlüssel in der Tabelle erstellen und eine bestimmte Abfrage zum Identifizieren und Entfernen verwenden Duplikate.
Um einen Primärschlüssel zu erstellen, können wir diese Abfrage verwenden:
ALTER TABLE `TableA` ADD PRIMARY KEY (`member_id`, `quiz_num`, `question_num`, `answer_num`);
Sobald der Primärschlüssel vorhanden ist, können wir Duplikate mit dieser Abfrage löschen:
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 );
Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Datensätze effizient aus einer MySQL-Tabelle entfernen, ohne temporäre Tabellen zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!