Wie behandelt die MySQL-Abfrage doppelte Daten?Filtern, um doppelte Datenaussage zu entfernen

MySQLWie gehen Abfragen mit doppelten Daten um?Filtern, um doppelte Datenaussage zu entfernen

MySQL Umgang mit doppelten Daten

In einigen MySQL-Datentabellen können doppelte Datensätze vorhanden sein.In einigen Fällen erlauben wir das Vorhandensein doppelter Daten, aber manchmal müssen wir diese doppelten Daten auch löschen.

In diesem Kapitel stellen wir vor, wie doppelte Daten in der Datentabelle verhindert und wie doppelte Daten in der Datentabelle gelöscht werden.


Verhindern Sie doppelte Daten in Tabellen

Sie können das angegebene Feld in der MySQL-Datentabelle als festlegen PRIMÄRSCHLÜSSEL Oder EINZIGARTIG (einzigartig) Index, um die Eindeutigkeit der Daten sicherzustellen.

Versuchen wir es mit einem Beispiel: In der folgenden Tabelle gibt es 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 doppelten Primärschlüsselmodus festlegen, um die Eindeutigkeit der Daten festzulegen.Wenn Sie den doppelten Primärschlüssel festlegen, wird der Standardwert dieses Schlüssels festgelegt kann nicht NULL sein, kann aber auf NOT NULL gesetzt werden.Folgendermaßen:

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 einen eindeutigen Index festlegen, wird die SQL-Anweisung beim Einfügen doppelter Daten nicht erfolgreich ausgeführt und gibt einen Fehler aus.

Der Unterschied zwischen INSERT IGNORE INTO und INSERT INTO besteht darin, dass INSERT IGNORE die bereits in der Datenbank vorhandenen Daten ignoriert. Wenn es keine Daten in der Datenbank gibt, werden neue Daten eingefügt, und wenn Daten vorhanden sind, werden diese Daten übersprungen.Auf diese Weise können die vorhandenen Daten in der Datenbank erhalten bleiben und der Zweck des Einfügens von Daten in die Lücke erreicht werden.

Das folgende Beispiel verwendet INSERT IGNORE INTO, das ohne Fehler ausgeführt wird und keine doppelten Daten in die Datentabelle einfü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 wird nach dem Festlegen der Eindeutigkeit des Datensatzes beim Einfügen doppelter Daten kein Fehler zurückgegeben, sondern nur eine Warnung.Und REPLACE INTO in Wenn es einen primären oder eindeutigen Datensatz gibt, löschen Sie ihn zuerst.Fügen Sie einen neuen Datensatz ein.

Eine andere Möglichkeit, die Eindeutigkeit Ihrer Daten festzulegen, besteht darin, einen UNIQUE-Index wie diesen hinzuzufügen:

CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10)
   UNIQUE (last_name, first_name)
);

Statistiken duplizieren Daten

Im Folgenden zählen wir die Anzahl der doppelten Datensätze von first_name und last_name in der Tabelle:

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 mögliche doppelte Werte enthält.
  • Verwenden Sie COUNT(*) in der Spaltenauswahlliste, um diese Spalten aufzulisten.
  • Spalten, die in der GROUP BY-Klausel aufgeführt sind.
  • Die HAVING-Klausel legt die Anzahl der Wiederholungen größer als 1 fest.

doppelte Daten 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;

Sie können GROUP BY auch verwenden, um eindeutige Daten aus einer Tabelle zu lesen:

mysql> SELECT last_name, first_name
    -> FROM person_tbl
    -> GROUP BY (last_name, first_name);

Daten deduplizieren

Wenn Sie doppelte Daten in der Datentabelle löschen möchten, 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, sex);
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) in der Datentabelle hinzufügen, um doppelte Datensätze in der Tabelle zu löschen.Methoden wie folgt:

mysql> ALTER IGNORE TABLE person_tbl
    -> ADD PRIMARY KEY (last_name, first_name);

Hoffnung Chen Weiliang Blog ( https://www.chenweiliang.com/ ) shared "Wie fragt MySQL doppelte Daten ab und behandelt sie?Filtering and Deduplication Statements" wird Ihnen dabei helfen.

Willkommen, um den Link dieses Artikels zu teilen:https://www.chenweiliang.com/cwl-499.html

Willkommen im Telegrammkanal von Chen Weiliangs Blog, um die neuesten Updates zu erhalten!

🔔 Seien Sie der Erste, der den wertvollen „ChatGPT Content Marketing AI Tool Usage Guide“ im Kanal-Top-Verzeichnis erhält! 🌟
📚 Dieser Leitfaden enthält einen enormen Mehrwert. 🌟Dies ist eine seltene Gelegenheit, verpassen Sie sie nicht! ⏰⌛💨
Teilen und liken, wenn es euch gefällt!
Ihr Teilen und Ihre Likes sind unsere ständige Motivation!

 

发表 评论

Deine Email-Adresse wird nicht veröffentlicht. 必填 项 已 已 * 标注

nach oben scrollen