MySQL verarbeitet doppelte Daten
Einige MySQL-Datentabellen können doppelte Datensätze enthalten. In einigen Fällen lassen wir das Vorhandensein doppelter Daten zu, aber manchmal müssen wir diese doppelten Daten auch löschen.
In diesem Kapitel stellen wir vor, wie Sie verhindern, dass doppelte Daten in der Datentabelle angezeigt werden, und wie Sie doppelte Daten in der Datentabelle löschen.
Verhindern Sie, dass doppelte Daten in der Tabelle angezeigt werden
Sie können das angegebene Feld in der MySQL-Datentabelle als PRIMARY KEY (Primärschlüssel) oder UNIQUE (eindeutiger) Index festlegen, um die Eindeutigkeit sicherzustellen die Daten.
Lassen Sie uns ein Beispiel versuchen: Die folgende Tabelle enthält keine Indizes und Primärschlüssel, sodass die Tabelle mehrere doppelte Datensätze zulässt.
CREATE TABLE person_tbl ( first_name CHAR(20), last_name CHAR(20), sex CHAR(10) );
Wenn Sie die Felder „Vorname“ und „Nachname“ in der Tabelle festlegen möchten, können die Daten nicht wiederholt werden. Sie können den Dual-Primärschlüsselmodus festlegen, um die Eindeutigkeit der Daten festzulegen Primärschlüssel, der Standardwert dieses Schlüssels darf nicht NULL sein und kann auf NOT NULL gesetzt werden. Wie unten gezeigt:
CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10), PRIMARY KEY (last_name, first_name) );
Wenn wir beim Einfügen doppelter Daten einen eindeutigen Index festlegen, wird die SQL-Anweisung nicht erfolgreich ausgeführt und es wird ein Fehler ausgegeben.
Der Unterschied zwischen INSERT IGNORE INTO und INSERT INTO besteht darin, dass INSERT IGNORE die Daten ignoriert, die bereits in der Datenbank vorhanden sind. Wenn keine Daten in der Datenbank vorhanden sind, werden neue Daten eingefügt. Die Daten werden übersprungen. Auf diese Weise können die vorhandenen Daten in der Datenbank beibehalten werden, um den Zweck des Einfügens von Daten in die Lücke zu erreichen.
Das folgende Beispiel verwendet INSERT IGNORE INTO. Nach der Ausführung treten keine Fehler auf und es werden keine doppelten Daten in die Datentabelle eingefügt:
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name) -> VALUES( 'Jay', 'Thomas'); Query OK, 1 row affected (0.00 sec) mysql> INSERT IGNORE INTO person_tbl (last_name, first_name) -> VALUES( 'Jay', 'Thomas'); Query OK, 0 rows affected (0.00 sec)
INSERT IGNORE INTO Beim Einfügen von Daten In den Einstellungen wird nach Sicherstellung der Eindeutigkeit des Datensatzes beim Einfügen doppelter Daten kein Fehler, sondern nur eine Warnung zurückgegeben. Wenn REPLACE INTO in Datensätzen mit demselben primären oder eindeutigen Wert erfolgt, werden diese zuerst gelöscht. Fügen Sie dann neue Datensätze ein.
Eine andere Möglichkeit, die Einzigartigkeit von Daten festzulegen, besteht darin, einen UNIQUE-Index hinzuzufügen, wie unten gezeigt:
CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10) UNIQUE (last_name, first_name) );
Duplikatdaten zählen
Nachfolgend zählen wir den Vornamen die Tabelle Die Anzahl der doppelten Datensätze mit Nachname:
mysql> SELECT COUNT(*) as repetitions, last_name, first_name -> FROM person_tbl -> GROUP BY last_name, first_name -> HAVING repetitions > 1;
Die obige Abfrageanweisung gibt die Anzahl der doppelten Datensätze in der Tabelle person_tbl zurück. Um nach doppelten Werten abzufragen, gehen Sie im Allgemeinen wie folgt vor:
Bestimmen Sie, welche Spalte Werte enthält, die möglicherweise dupliziert werden.
Die mit COUNT(*) in der Spaltenauswahlliste aufgeführten Spalten.
Die in der GROUP BY-Klausel aufgeführten Spalten.
Die HAVING-Klausel legt die Anzahl der Wiederholungen auf größer als 1 fest.
Duplikatdaten filtern
Wenn Sie eindeutige Daten lesen müssen, können Sie das Schlüsselwort DISTINCT in der SELECT-Anweisung verwenden, um doppelte Daten zu filtern.
mysql> SELECT DISTINCT last_name, first_name -> FROM person_tbl -> ORDER BY last_name;
Sie können auch GROUP BY verwenden, um nicht doppelte Daten in der Datentabelle zu lesen:
mysql> SELECT last_name, first_name -> FROM person_tbl -> GROUP BY (last_name, first_name);
Duplizierte Daten löschen
Wenn Sie die löschen möchten Datentabelle Für doppelte Daten in der Datentabelle können Sie die folgende SQL-Anweisung verwenden:
mysql> CREATE TABLE tmp SELECT last_name, first_name, sex -> FROM person_tbl; -> GROUP BY (last_name, first_name); mysql> DROP TABLE person_tbl; mysql> ALTER TABLE tmp RENAME TO person_tbl;
Natürlich können Sie auch INDEX (Index) und PRIMAY KEY (Primärschlüssel) zur Datentabelle hinzufügen eine einfache Möglichkeit, die Tabelle mit doppelten Datensätzen zu löschen. Die Methode lautet wie folgt:
mysql> ALTER IGNORE TABLE person_tbl -> ADD PRIMARY KEY (last_name, first_name);
Das Obige ist der Inhalt des [MySQL-Tutorials] MySQL, das doppelte Daten verarbeitet. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn). !