GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So entfernen Sie doppelte Zeilen in MySQL

Einführung

Es gibt mehrere Fälle, in denen Sie möglicherweise auf doppelte Zeilen in Ihrer MySQL-Datenbank stoßen. Diese Anleitung führt Sie durch den Vorgang zum Entfernen doppelter Zeilenwerte in MySQL.

Voraussetzungen

  • Ein System mit installiertem MySQL
  • Ein MySQL-Root-Benutzerkonto
  • Zugriff auf ein Terminalfenster / eine Befehlszeile (Strg-Alt-T, Suche> Terminal)

Testdatenbank einrichten

Wenn Sie bereits eine MySQL-Datenbank haben, an der Sie arbeiten können, fahren Sie mit dem nächsten Abschnitt fort.

Öffnen Sie andernfalls ein Terminalfenster und geben Sie Folgendes ein:

mysql –u root –p

Wenn Sie dazu aufgefordert werden, geben Sie den Stamm ein Passwort für Ihre MySQL-Installation. Wenn Sie ein bestimmtes Benutzerkonto haben, verwenden Sie diese Anmeldeinformationen anstelle von root.

Die Systemeingabeaufforderung sollte sich ändern in:

mysql>

Testdatenbank erstellen

Sie können eine neue Tabelle in einer vorhandenen Datenbank erstellen. Suchen Sie dazu die entsprechende Datenbank, indem Sie alle vorhandenen Instanzen auflisten mit:

SHOW DATABASES;

Alternativ können Sie eine neue Datenbank erstellen, indem Sie den folgenden Befehl eingeben:

CREATE DATABASE IF NOT EXISTS testdata;

Um mit der Arbeit an Ihren neuen testdata zu beginnen Datenbanknutzung:

USE testdata;

Tabelle und Daten hinzufügen

Sobald Sie sich in der Datenbank befinden, fügen Sie mit dem folgenden Befehl eine Tabelle mit den folgenden Daten hinzu:

CREATE TABLE dates (
id INT PRIMARY KEY AUTO_INCREMENT,
day VARCHAR(2) NOT NULL,
month VARCHAR(10) NOT NULL,
year VARCHAR(4) NOT NULL

);

INSERT INTO dates (day,month,year)
VALUES (’29’,’January’,’2011’),
(’30’,’January’,’2011’),
(’30’,’January’,’2011’),
(’14’,’February,’2017’),
(’14’,’February,’2018’),
(‘23’,’March’,’2018’),
(‘23’,’March’,’2018’),
(‘23’,’March’,’2019’),
(‘29’,’October’,’2019’),
(‘29’,’November’,’2019’),
(‘12’,’November’,’2017’),
(‘17’,’August’,’2018’),
(‘05’,’June’,’2016’);

Den Inhalt der Datumstabelle anzeigen

Geben Sie Folgendes ein, um alle von Ihnen eingegebenen Daten sortiert nach Jahr anzuzeigen:

SELECT * FROM dates ORDER BY year;


Die Ausgabe sollte eine Liste mit Datumsangaben in der entsprechenden Reihenfolge anzeigen.

Doppelte Zeilen anzeigen

Um herauszufinden, ob es doppelte Zeilen in der Testdatenbank gibt, verwenden Sie den Befehl:

SELECT
     day, COUNT(day),
     month, COUNT(month),
     year, COUNT(year)
FROM 
     dates
GROUP BY
     day,
     month,
     year
HAVING 
     COUNT(day) > 1
     AND COUNT(month) > 1
     AND COUNT(year) > 1;

Das System zeigt alle doppelten Werte an. In diesem Fall sollten Sie Folgendes sehen:

Dieses Format funktioniert, um mehrere Spalten auszuwählen. Wenn Sie eine Spalte mit einer eindeutigen Kennung haben, z. B. eine E-Mail-Adresse in einer Kontaktliste oder eine einzelne Datumsspalte, können Sie einfach aus dieser einen Spalte auswählen.

Doppelte Zeilen entfernen

Bevor Sie eine der unten genannten Methoden verwenden, denken Sie daran, dass Sie in einer vorhandenen Datenbank arbeiten müssen. Wir werden unsere Beispieldatenbank verwenden:

USE testdata;

Option 1:Doppelte Zeilen mit INNER JOIN entfernen

Um doppelte Zeilen in unserer Test-MySQL-Tabelle zu löschen, verwenden Sie MySQL JOINS und geben Sie Folgendes ein:

delete t1 FROM dates t1
INNER  JOIN dates t2
WHERE
    t1.id < t2.id AND
    t1.day = t2.day AND
    t1.month = t2.month AND
    t1.year = t2.year;

Sie können auch den Befehl von Duplikate anzeigen verwenden Zeilen um die Löschung zu bestätigen.

Option 2:Doppelte Zeilen mithilfe einer Zwischentabelle entfernen

Sie können eine Zwischentabelle erstellen und verwenden Sie es, um doppelte Zeilen zu entfernen. Dies geschieht, indem nur die eindeutigen Zeilen in die neu erstellte Tabelle übertragen und die ursprüngliche (mit den verbleibenden doppelten Zeilen) gelöscht wird.

Befolgen Sie dazu die nachstehenden Anweisungen.

1. Erstellen Sie eine Zwischentabelle, die dieselbe Struktur wie die Quelltabelle hat, und übertragen Sie die in der Quelle gefundenen eindeutigen Zeilen:

CREATE TABLE [copy_of_source] SELECT DISTINCT [columns] FROM [source_table];

Zum Beispiel, um eine Kopie der Struktur der Beispieltabelle dates zu erstellen Der Befehl lautet:

CREATE TABLE copy_of_dates SELECT DISTINCT id, day, month, year FROM dates;

2. Danach können Sie die Quelltabelle mit dem Drop-Befehl löschen und die neue umbenennen:

DROP TABLE [source_table];
ALTER TABLE [copy_of_source] RENAME TO [source_table];

Zum Beispiel:

DROP TABLE dates;
ALTER TABLE copy_of_dates RENAME TO dates;

Option 3:Doppelte Zeilen mit ROW_NUMBER() entfernen

Wichtig: Diese Methode ist nur für MySQL-Version 8.02 verfügbar und später. Überprüfen Sie die MySQL-Version, bevor Sie diese Methode ausprobieren.

Eine andere Möglichkeit, doppelte Zeilen zu löschen, ist die ROW_NUMBER() Funktion.

SELECT *. ROW_NUMBER () Over (PARTITION BY [column] ORDER BY [column]) as [row_number_name];

Daher wäre der Befehl für unsere Beispieltabelle:

SELECT *. ROW_NUMBER () Over (PARTITION BY id ORDER BY id) as row_number;

Die Ergebnisse enthalten eine row_number Säule. Die Daten werden nach id partitioniert und innerhalb jeder Partition gibt es eindeutige Zeilennummern. Eindeutige Werte sind mit der Zeilennummer 1 gekennzeichnet , während Duplikate 2 sind , 3 , und so weiter.

Um doppelte Zeilen zu entfernen, müssen Sie daher alles außer den mit 1 markierten löschen. Dies geschieht durch Ausführen eines DELETE Abfrage mit row_number als Filter.

Um doppelte Zeilen zu löschen, führen Sie Folgendes aus:

DELETE FROM [table_name] WHERE row_number > 1;

In unserem Beispiel Datum Tabelle wäre der Befehl:

DELETE FROM dates WHERE row_number > 1;

Die Ausgabe teilt Ihnen mit, wie viele Zeilen betroffen sind, d. h. wie viele doppelte Zeilen gelöscht wurden.

Sie können überprüfen, ob keine doppelten Zeilen vorhanden sind, indem Sie Folgendes ausführen:

SELECT * FROM [table_name];

Zum Beispiel:

SELECT * FROM dates;

Cent OS
  1. Wie ändert man die Sortierung der MySQL-Datenbank?

  2. So kopieren Sie eine MySQL-Datenbank

  3. So installieren Sie den MySQL 8-Datenbankserver unter CentOS 8

  4. So installieren Sie den MySQL-Datenbankserver unter CentOS

  5. So reparieren Sie eine beschädigte MySQL-Datenbanktabelle

So löschen Sie eine MySQL-Datenbank in cPanel

Wie repariere ich die MySQL-Datenbank in cPanel?

Wie repariert man eine MySQL-Datenbank?

Wie optimiert man eine MySQL-Datenbank?

Wie man eine Datenbank in MySQL erstellt

So benennen Sie einen MySQL-Datenbanknamen um