Heim  >  Artikel  >  Datenbank  >  Wie entferne ich Duplikate aus einer Tabelle mithilfe eines eindeutigen Index in MySQL?

Wie entferne ich Duplikate aus einer Tabelle mithilfe eines eindeutigen Index in MySQL?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-25 07:46:02732Durchsuche

How to Remove Duplicates from a Table Using a Unique Index in MySQL?

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:

  1. Kopieren Sie die Daten in eine temporäre Tabelle.
  2. Schneiden Sie die Originaltabelle ab.
  3. Erstellen Sie den UNIQUE-Index auf die Originaltabelle.
  4. Fügen Sie die Daten mit INSERT IGNORE wieder in die Originaltabelle ein.
<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!

Stellungnahme:
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