Heim  >  Artikel  >  Datenbank  >  Duplikate von MySQL-Abfragedaten

Duplikate von MySQL-Abfragedaten

WBOY
WBOYOriginal
2023-05-12 10:00:372878Durchsuche

MySQL ist ein beliebtes relationales Datenbankverwaltungssystem, das zum Speichern, Verwalten und Abfragen von Datenbanken verwendet werden kann. In MySQL müssen wir manchmal doppelte Daten abfragen. In diesem Artikel erfahren Sie, wie Sie MySQL zum Abfragen der Datenduplizierung verwenden.

Schritt 1: Erstellen Sie eine Datenbank in MySQL und fügen Sie Daten hinzu.

Erstellen Sie eine Datenbank in MySQL und fügen Sie eine Tabelle mit doppelten Daten hinzu. Hier ist eine Beispiel-SQL-Abfrage:

CREATE DATABASE testdb;

USE testdb;

CREATE TABLE users (
  id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(30) NOT NULL,
  email VARCHAR(50) NOT NULL
);

INSERT INTO users (name, email) VALUES
  ('Tom', 'tom@email.com'),
  ('Steve', 'steve@email.com'),
  ('John', 'john@email.com'),
  ('Tom', 'tom@email.com'),
  ('Jim', 'jim@email.com');

Diese Abfrage erstellt eine neue Datenbank mit dem Namen „testdb“ und erstellt darin eine Tabelle mit dem Namen „users“. Die Tabelle enthält drei Spalten: „id“ (Primärschlüssel), „Name“ und „E-Mail“. Wir haben fünf Zeilen eingefügt, von denen zwei denselben Namen und dieselbe E-Mail-Adresse enthielten.

Schritt 2: Abfrage nach doppelten Daten

Jetzt müssen wir alle doppelten Zeilen finden. Dazu verwenden wir eine verschachtelte Abfrage:

SELECT name, email, COUNT(*) c
FROM users
GROUP BY name, email
HAVING c > 1;

Diese Abfrage gibt alle Zeilen zurück, in denen der Name und die E-Mail-Adresse mehr als einmal in der Tabelle vorkommen. Wir verwenden die GROUP BY-Anweisung, um nach Namen und E-Mail-Adresse zu gruppieren, und die HAVING-Anweisung, um Gruppen herauszufiltern, bei denen die Anzahl der Zeilen in der Gruppe größer als 1 ist.

Nachdem wir diese Abfrage ausgeführt haben, erhalten wir die folgenden Ergebnisse:

+------+----------------+---+
| name | email          | c |
+------+----------------+---+
| Tom  | tom@email.com  | 2 |
+------+----------------+---+

Wie wir sehen können, hat diese Abfrage die doppelten Daten gefunden, die wir in der Tabelle hinzugefügt haben. Die Ergebnisse zeigen doppelte Namen und E-Mail-Adressen sowie die Häufigkeit, mit der sie in der Tabelle vorkommen.

Schritt drei: Doppelte Daten entfernen

Wenn wir alle doppelten Zeilen entfernen möchten, können wir die folgende Abfrage verwenden, um sie zu entfernen:

DELETE FROM users WHERE id NOT IN (
  SELECT id
  FROM (
    SELECT MIN(id) id
    FROM users
    GROUP BY name, email
  ) t
);

Diese Abfrage entfernt alle doppelten Zeilen, die nicht die Mindest-ID haben. Wir haben eine Unterabfrage verwendet, um die kleinste ID in jeder Wiederholungsgruppe auszuwählen. Diese Unterabfrage verwendet zunächst eine GROUP BY-Anweisung, um nach Namen und E-Mail-Adresse zu gruppieren, und wählt dann die kleinste ID in jeder Gruppe aus. Die Hauptabfrage verwendet eine NOT IN-Anweisung und eine Unterabfrage, um alle Zeilen zu löschen, die nicht die kleinste ID enthalten.

Nachdem wir diese Abfrage ausgeführt haben, können wir die obige Abfrage erneut ausführen, um zu überprüfen, ob die doppelten Daten erfolgreich entfernt wurden.

Zusammenfassung

Das Abfragen nach doppelten Daten in MySQL ist einfach. Wir können verschachtelte Abfragen und GROUP BY-Anweisungen verwenden, um doppelte Zeilen zu finden und sie mithilfe von DELETE-Anweisungen zu löschen. Durch den Einsatz dieser Technologien können wir die Datenbank einfach verwalten und pflegen.

Das obige ist der detaillierte Inhalt vonDuplikate von MySQL-Abfragedaten. 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
Vorheriger Artikel:MySQL-AbfrageleistungNächster Artikel:MySQL-Abfrageleistung