traer - Encuentre duplicados o más en Mysql, elimínelos excepto la primera entrada
omitir repetidos mysql (3)
Tengo una tabla con filas como id, length, time y algunas de ellas son duplicadas, donde la longitud y la hora son las mismas en algunas filas. Quiero eliminar todas las copias de la primera fila enviada.
id | length | time
01 | 255232 | 1242
02 | 255232 | 1242 <- Delete that one
Tengo esto para mostrar todos los duplicados en la tabla.
SELECT idgarmin_track, length , time
FROM `80dage_garmin_track`
WHERE length in
( SELECT length
FROM `80dage_garmin_track`
GROUP
BY length
HAVING count(*) > 1 )
ORDER BY idgarmin_track, length, time LIMIT 0,500
Si puede mantener su tabla fuera de línea durante un período, la forma más sencilla es crear una nueva tabla que contenga los datos que desea y luego soltar la tabla original:
create table `80dage_garmin_track_un` like `80dage_garmin_track`;
insert into `80dage_garmin_track_un`
select min(idgarmin_track), length, time
group by length, time;
rename table `80dage_garmin_track` to old, `80dage_garmin_track_un` to `80dage_garmin_track`;
drop table old;
tengo el mismo problema Holsteinkaa, solo lo uso así:
delete from table where id in ( select * from (
SELECT id FROM table t1
WHERE EXISTS (SELECT 1 from table t2
WHERE t1.field = t2.field
AND t1.id > t2.id
)
) as tmp )
Estaba tratando de poner esto como un comentario a la respuesta de Michael Pakhantsov, pero no puedo: / lo siento
DELETE FROM `80dage_garmin_track` t1
WHERE EXISTS (SELECT 1 from `80dage_garmin_track` t2
WHERE t1.Length = t2.Length
AND t1.Time = t2.Time
AND t1.idgarmin_track > t2.idgarmin_track)