quarta-feira, maio 28, 2008

SQL - detectar valores repetidos

Imagine-se o cenário que é a meio do desenvolvimento de uma aplicação uma coluna que não era unique ter de passar a sê-lo, mas ao mesmo tempo temos de manter os dados que já estão carregados na tabela, detectando os que estão repetidos e alterando só esses para cumprir a restrição da coluna ter valores unique.

O script seguinte é um exemplo de como podemos obter os valores repetidos:

SELECT colName, COUNT(colName) AS cnt
FROM tableName
GROUP BY colName
ORDER BY cnt desc

3 comentários:

Alex disse...

Tiago,
Por acaso esse até é um dos problemas colocados pela Safira no processo de recrutamento :-)
Já agora, vê tambem a clausula HAVING que neste caso pode ser porreira para cortar os que têm apenas 1.

Alex

Anónimo disse...

E porque não:

SELECT colName, COUNT(colName) AS cnt
FROM tableName
GROUP BY colName
HAVING cnt>1


Devolvendo todos os registos com colName repetidos.

MaisCamboriu disse...

Realmente é necessária a cláusula having para isolar apenas os duplicados conforme o Antonio exemplificou.