sql >> Base de Datos >  >> RDS >> Mysql

Establezca qué filas eliminar en mysql después de aplicar un índice único combinado con ignorar

En lugar de tratar de eliminar lo que no necesita, intente pensar en ello como un problema en el que desea elegir los que desea e ignorar el resto; así:

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;

Eso debería crear una tabla other_table que satisfaga la restricción única en sus datos; solo las filas con el zvalue más alto se conservan, los demás se eliminan (omiten).