Mysql
 sql >> Database >  >> RDS >> Mysql

Imposta le righe da eliminare su mysql dopo aver applicato l'indice univoco combinato w/ignore

Invece di cercare di eliminare ciò che non ti serve, prova a pensarlo come un problema per cui vuoi scegliere quelli che vuoi e ignorare il resto; così:

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;

Questo dovrebbe creare una tabella other_table che soddisfi il vincolo univoco nei tuoi dati; solo le righe con il zvalue più alto vengono mantenuti, gli altri rimossi (saltati).