2008-11-20 9 views

Répondre

47

Pour montrer un exemple de ce que d'autres ont décrit:

SELECT 
    Col1, -- All of the columns you want to dedupe on 
    Col2, -- which is not neccesarily all of the columns 
    Col3, -- in the table 
    Col4, 
    Col5, 
    Col6, 
    Col7, 
    Col8, 
    Col9, 
    Col10 
FROM 
    MyTable 
GROUP BY 
    Col1, 
    Col2, 
    Col3, 
    Col4, 
    Col5, 
    Col6, 
    Col7, 
    Col8, 
    Col9, 
    Col10 
HAVING 
    COUNT(*) > 1 
+0

cloué ça mec .. Merci beaucoup .. – Bajji

12

Vous pouvez utiliser "group by" sur toutes les colonnes, puis COUNT (*)> 1

+2

cela fonctionne bien, n'oubliez pas d'exclure un PK synthétique si vous en avez un –

2

DETECT, tout groupe en tant que dit Guge.

select fieldA, fieldB, count(*) from table 
group by fieldA, fieldB 
having count(*) > 1 

Si vous voulez supprimer ... pseudo .... dupes

select distinct into a temp table 
truncate original table 
select temp table back into original table 

Avec troncature vous pouvez rencontrer des problèmes si vous avez des contraintes FK, donc être intelligent de laisser tomber les contraintes et faire en sorte vous ne faites pas d'enregistrements orphelins.

6

Essayez cette

Select * From Table 
Group By [List all fields in the Table here] 
Having Count(*) > 1 
3

En plus des suggestions fournies, je serais alors aller à l'effort de prévention des doublons dans la avenir, plutôt que d'essayer de les localiser plus tard. Ceci est fait en utilisant des index uniques sur les colonnes (ou groupes de colonnes) qui sont censés être uniques. N'oubliez pas que les données de la base de données peuvent être modifiées à partir d'autres emplacements que via l'application spécifique sur laquelle vous travaillez. Il est donc préférable de définir ce qui est autorisé ou non dans une table au niveau de la base de données.

Questions connexes