Mysql
 sql >> Base de données >  >> RDS >> Mysql

Définissez les lignes à supprimer sur mysql après avoir appliqué l'index unique combiné avec ignorer

Au lieu d'essayer de supprimer ce dont vous n'avez pas besoin, essayez de le considérer comme un problème dans lequel vous voulez choisir ceux que vous voulez et ignorer le reste; comme ça :

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;

Cela devrait créer une table other_table qui satisfait la contrainte unique dans vos données ; uniquement les lignes avec la zvalue la plus élevée sont conservés, les autres supprimés (ignorés).