Desta feita, precisei de localizar e eliminar de forma eficiente registos duplicados numa tabela, onde não existia um campo identificador unico nem um autonumber, ou outro que me permitisse isolar duplicados e eliminar apenas os duplicados, deixando um registo e não as várias duplicações do mesmo.
Aqui fica o script feito para resolver esta questão, na esperança que seja útil para mais alguém! Porque cooperar é mais produtivo que competir.
USE BD
GO
-- ADICIONA UM CAMPO ID AUTONUMER
ALTER TABLE dbo.tabela
ADD ID INT IDENTITY
GO
-- SELECT
SELECT *
FROM tabela
GO
-- DETECTA DUPLICADOS
SELECT campo, COUNT(*) TotalCount
FROM tabela
GROUP BY campo
HAVING COUNT(*) > 1
ORDER BY COUNT(*) DESC
GO
-- ELEMINA DUPS
DELETE
FROM tabela
WHERE ID NOT IN
(
SELECT MAX(ID)
FROM tabela
GROUP BY campo)
GO
-- SELECT DE CONFIRMAÇÃO
SELECT *
FROM tabela
GO
-- REMOVE INDEX CRIADO PARA REMOVER DUPLICADOS
ALTER TABLE tabela
DROP COLUMN ID
GO
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.