Finde Duplikate in derselben Tabelle in MySQL

10

Ich habe eine Tabelle mit zwei Spalten - Künstler, release_id

Welche Abfrage kann ich ausführen, um doppelte Datensätze anzuzeigen?

z.B. Mein Tisch ist

%Vor%

Die Abfrage sollte

anzeigen %Vor%     
Franco 11.02.2012, 11:15
quelle

12 Antworten

26

Sie können eine Gruppierung über die interessierenden Spalten verwenden, um herauszufinden, ob es Duplikate gibt.

%Vor%     
a'r 11.02.2012, 11:19
quelle
3
%Vor%     
DonCallisto 11.02.2012 11:19
quelle
2

Sie können so etwas ausprobieren

%Vor%

was ausgeben würde

%Vor%     
oezi 11.02.2012 11:18
quelle
2
%Vor%     
Laurent Grégoire 11.02.2012 11:20
quelle
2

AUSWÄHLEN     Künstler, release_id, count (*) no_of_records, group_concat (id) Von der Tabelle GROUP BY-Künstler, Release-ID HAVING zählen (*) & gt; 1;

Wenn Sie auch group_concat (id) hinzufügen, erhalten Sie alle IDs der Duplikate.

    
dev009 19.08.2013 09:01
quelle
1

Sie können diese Abfrage für dasselbe Ergebnis verwenden. es funktioniert für mich

SELECT Vorname, Nachname, Liste.Adresse FROM Liste INNER JOIN (SELECT Adresse FROM Liste GROUP BY Adresse HAVING Anzahl (id) & gt; 1) dup ON list.address = dup.adresse

    
Sarthak Y. Vaidya 22.12.2014 06:48
quelle
1

Wählen Sie * aus der Tabelle wo Künstler IN (wählen Sie Künstler aus der Tabellengruppe nach Künstler mit Anzahl (ID) & gt; 1) und release_ID IN (wählen Sie release_id aus der Tabellengruppe von release_id mit count (release_id) & gt; 1);

ruft ab: KünstlerX: 45677 KünstlerX: 45677 KünstlerY: 378798 KünstlerY: 378798

    
Shiva Kumar 10.05.2016 13:55
quelle
0
%Vor%     
Stelian Matei 11.02.2012 11:18
quelle
0
%Vor%     
John Woo 11.02.2012 11:21
quelle
0

Versuchen Sie Folgendes:

%Vor%     
Jayy 11.02.2012 11:45
quelle
0

Diese Methode ist vielleicht nicht gut für Sie, aber wenn Sie einmal Duplikate loswerden wollen und dies tun wollen, während Sie sicherstellen, dass es sich um Duplikate handelt, können Sie Folgendes versuchen:

  1. Dupliziere deine table1 in table2 , zum Beispiel so:

    CREATE TABLE tabelle2 AS SELECT * FROM table1;

  2. fügen Sie table1 eine neue Spalte hinzu, z. B. name it kount

  3. Führen Sie eine Abfrage aus (dies setzt voraus, dass Release-ID eine eindeutige Spalte sein sollte):

    UPDATE Tabelle1 AS t1 SET t1.kount = (SELECT COUNT (*) FROM Tabelle2 AS t2 WHERE t1.release_id = t2.release_id)

  4. Drop-Tabelle table2

  5. Verwenden Sie table1 .kount, um Ihre Duplikate zu finden und sie oder etwas zu entfernen. Vorzugsweise in PHP / Python / Perl. Auf diese Weise können Sie zum Beispiel sicherstellen, dass es sich tatsächlich um Duplikate handelt und Sie nur die gleiche release_id haben. Die selbe release_id könnte zufällig vergeben werden und Titel, Veröffentlichungsjahre usw. könnten unterschiedlich sein. Setzen Sie einfach Ihren Code hier, um die Duplikate (Pseudocode) zu filtern:

    foreach (sql (SELECT * FROM tabelle1 WHERE kount & gt; 1)) do // etwas tun

Tom 25.05.2017 15:21
quelle
-1

Wenn Sie in einer Zeile mehr eindeutige Spalten haben, können Sie Folgendes verwenden:

%Vor%     
Jenovai Matyas 04.10.2016 12:19
quelle

Tags und Links