Amigos,
El borrado de data de tablas MySQL es un poco particular ya esta BD no permite el uso de subconsultas para Update o Delete, con lo cual nuestra query de costumbre para Sql Server devuelve un error
-------------------------------------------------------------------------
-- Detalle: Este script permite borrar registros duplicados Sql Server --
-- Autor: Gustavo Herrera --
-------------------------------------------------------------------------
-- 1) Agrego un campo "id" identity (si no lo tiene)
Alter Table TablaX
add id integer identity
-- 2) Borro registros duplicados
Delete from TablaX
where Id > (Select min(Id) From TablaX as b Where TablaX.Idmsg = b.Idmsg)
-- 3) Dropeo el campo creado para correr el paso 2
Alter Table TablaX
Drop Column id
Con el problema “encima”, me dediqué a buscar algo que me permitiese borrar los registros (no a mano claro).
Luego de muuuucho buscar encontré algo que el MySql tiene bien escondido o al menos no lo suficientemente documentado.
Se trata de una cláusula que, al ser agregada a la creación de un índice unique en el MySql, deja soló uno de los registros duplicados borrando al resto.
La clásula oculta se llama IGNORE y esta es la sentencia:
ALTER IGNORE TABLE `Nombre Tabla`
ADD UNIQUE INDEX IxUnique_Globalid_Direction (campo1,campo2);
Grandes problemas, pequeñas pero efectivas soluciones amigos...,de lo contrario no les quedará otra más que crear una tabla temporal y copiar hacia allí los registros "buenos" para luego borrar la tabla anterior (algo sumamente engorroso y que requiere de un downtime considerable)
Espero que les sirva, saludos.