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
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
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:
Dupliziere deine table1
in table2
, zum Beispiel so:
CREATE TABLE tabelle2 AS SELECT * FROM table1;
fügen Sie table1
eine neue Spalte hinzu, z. B. name it kount
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)
Drop-Tabelle table2
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
Wenn Sie in einer Zeile mehr eindeutige Spalten haben, können Sie Folgendes verwenden:
%Vor%Tags und Links mysql