Duplicate value in the table. How to remove?

5

I inserted a TSE tables into my database and have duplicate values from the SQ_CANDIDATO column representing the image placed above. How can I do a maintenance with sql that will remove ALL ID ?

... Leave only one SQ_CANDIDATO f record for each ID ...

    
asked by anonymous 06.03.2015 / 04:36

2 answers

1

You can mount a subselect within delete by selecting lines whose sq_candidato are repeated:

delete from candidatos where id in(
    select candidatos.id from candidatos
    inner join candidatos c on c.sq_candidato = candidatos.sq_candidato
    where c.id <> candidatos.id
    group by candidatos.sq_candidato
);

See working at Ideone . (SQLFiddle is giving timeout)

    
06.03.2015 / 20:38
1
DELETE T2 /*Isto aqui define a tabela que terá o registro apagado*/
FROM candidatos T1
INNER JOIN candidados T2
ON T1.SQ_CANDIDATO = T2.SQ_CANDIDATO
AND T1.id < T2.id /*Isto aqui é para evitar que o JOIN faça select duas vezes no mesmo registro, isto é, uma vez em T1 e outra em T2, usando-se '>' ou '<', então o registro só aparecerá uma vez, então o desempenho do select será  maior e apenas um registro será apagado*/
    
26.09.2015 / 05:42