Zamiast próbować usuwać to, czego nie potrzebujesz, spróbuj myśleć o tym jako o problemie, w którym chcesz wybrać te, które chcesz i zignorować resztę; tak:
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;
To powinno stworzyć tabelę other_table
spełnia unikatowe ograniczenie w Twoich danych; tylko wiersze z najwyższą zvalue
są zachowane, pozostałe usunięte (pominięte).