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

Legen Sie fest, welche Zeilen auf mysql gelöscht werden sollen, nachdem Sie den kombinierten eindeutigen Index mit Ignorieren angewendet haben

Anstatt zu versuchen, das zu löschen, was Sie nicht benötigen, versuchen Sie, es als ein Problem zu betrachten, bei dem Sie die gewünschten auswählen und den Rest ignorieren möchten. so:

CREATE TABLE `other_table` LIKE `part3`;
INSERT INTO `other_table`
SELECT `part3`.*
FROM (SELECT gtu, region, trait, pop, author, risk, MAX(zvalue) AS max_zval
    FROM `part3`
    GROUP BY gtu, region, trait, pop, author, risk
) `tmp`
INNER JOIN `part3` USING (gtu, region, trait, pop, author, risk)
WHERE `part3`.zvalue = `tmp`.max_zval;

Das sollte eine Tabelle other_table erstellen die die Eindeutigkeitsbeschränkung in Ihren Daten erfüllt; nur die Zeilen mit dem höchsten zvalue beibehalten, die anderen entfernt (übersprungen).