Dieser Code funktioniert nicht für MySQL 5.0. So schreiben Sie ihn neu, damit er funktioniert
DELETE FROM posts where id=(SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 ))
Ich möchte Spalten löschen, die keine eindeutige ID haben. Ich werde hinzufügen, dass es die meiste Zeit nur eine ID ist (ich habe die In-Syntax ausprobiert und es funktioniert auch nicht).
SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 )
quelle
CROSS JOIN
führt anscheinend eine kartesische Verknüpfung durch, scheint also unnötige Arbeit zu leisten oder suboptimal zu arbeiten? Könnte jemand erklären?USING
Klausel vorhanden ist. DaUSING
das Produkt auf Paare mit dem gleichen Wert in derid
Spalte beschränkt ist, ist es in der Tat sehr begrenzt.DELETE p1 FROM posts AS p1 INNER JOIN ( SELECT ID FROM posts GROUP BY id HAVING COUNT(id) > 1 ) AS p2 ON p2.ID=p1.ID
Sie können Inner Join verwenden:
quelle
Wenn Sie alle Duplikate löschen möchten, jedoch eines aus jedem Satz von Duplikaten, ist dies eine Lösung:
quelle