Duplikate mit eindeutigem Index entfernen
Wenn Sie eine große Tabelle mit doppelten Datensätzen haben und diese durch Erstellen eines eindeutigen Index entfernen möchten, Sie müssen sich der möglichen Konsequenzen bewusst sein.
Wenn Sie versuchen, einen eindeutigen Index zu einer Tabelle hinzuzufügen, die bereits Duplikate enthält, schlägt der Vorgang aufgrund eines Fehlers aufgrund eines doppelten Schlüssels fehl. Dies liegt daran, dass eindeutige Indizes die Eindeutigkeit der darin enthaltenen Daten erzwingen.
Es gibt jedoch eine Problemumgehung für dieses Problem. Sie können den IGNORE-Modifizierer verwenden, wenn Sie den eindeutigen Index erstellen. Dadurch wird MySQL angewiesen, alle doppelten Werte zu ignorieren und nur die eindeutigen einzufügen.
<code class="sql">ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D) IGNORE;</code>
Durch die Verwendung des IGNORE-Modifizierers werden die Duplikate entfernt, es ist jedoch wichtig zu beachten, dass er nicht angibt, welche Zeile beibehalten wird . MySQL wählt willkürlich eine Zeile für jedes Duplikat aus und verwirft die anderen.
Wenn Sie MySQL Version 5.7.4 oder höher verwenden, wurde der IGNORE-Modifikator für ALTER TABLE entfernt und verursacht einen Fehler. In diesem Fall können Sie die folgende Problemumgehung verwenden:
<code class="sql">CREATE TABLE tmp_data SELECT * FROM mytable; TRUNCATE TABLE mytable; ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D); INSERT IGNORE INTO mytable SELECT * from tmp_data; DROP TABLE tmp_data;</code>
Mit INSERT IGNORE werden alle doppelten Werte ignoriert und nur die eindeutigen eingefügt. Sobald die Daten eingefügt wurden, kann die temporäre Tabelle gelöscht werden.
Das obige ist der detaillierte Inhalt vonWie entferne ich Duplikate aus einer Tabelle mithilfe eines eindeutigen Index in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!