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).