Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Entfernen doppelter SQL-Datensätze, um einen eindeutigen Schlüssel zuzulassen

Als Antwort auf Ihren Kommentar ist hier eine Abfrage, die in MySQL funktioniert:

delete YourTable
from YourTable
inner join YourTable yt2
on YourTable.product_id = yt2.product_id
and YourTable.id < yt2.id

Dies würde nur doppelte Zeilen entfernen. Der inner join filtert die neueste Zeile für jedes Produkt heraus, auch wenn keine anderen Zeilen für dasselbe Produkt vorhanden sind.

P.S. Wenn Sie versuchen, die Tabelle nach FROM zu aliasen , MySQL verlangt, dass Sie den Namen der Datenbank angeben, wie zum Beispiel:

delete <DatabaseName>.yt
from YourTable yt
inner join YourTable yt2
on yt.product_id = yt2.product_id
and yt.id < yt2.id;