Les administrateurs de bases savent que des erreurs occasionnelles se produisent, et des enregistrements en double sont insérés dans la base de données. Le problème est un problème commun pour les administrateurs à fixer, mais la suppression d'enregistrements à partir d'un serveur de SQL est une situation délicate. L'administrateur est donné la tâche de suppression des enregistrements sans enlever accidentellement d'autres données, ce qui peut arriver facilement si la requête est pas construit correctement. Apprenez à supprimer des enregistrements en double dans SQL tout en préservant les documents originaux.
Ouvrez Enterprise Manager pour SQL Server. Vous devez exécuter des requêtes pour vérifier le contenu en double. Il sera également vous donner une idée de combien de dossiers doivent être supprimés. Les grandes questions peuvent vous obliger à faire tomber le serveur SQL pour l'entretien.
Tapez dans la console:
select count () À partir LaTable
et
select distinct de LaTable
La 1ère commande vous indique combien d'enregistrements total que vous avez dans le tableau, et le 2ème commande vous indique combien de copies que vous avez. Cependant, la 2ème commande suppose que les dossiers sont complètement identiques, ce qui signifie tout petit écart ne sera pas inclus dans le tableau de double.
dossiers de copie dans un tableau distinct. Les copies suivantes de commande seulement fiches qui sont distincts et laisse de côté tous les doublons.
select distinct *
dans TempTable
de LaTable
Supprimer les doublons. La requête suivante supprime tous les doublons de la table d'origine, mais il conserve une copie de l'enregistrement original. Le "uniqueField" colonne est l'index de clé primaire unique ou mettre sur la table d'origine. Le "dupField" colonne est le champ qui est déterminé à être un élément déclencheur pour le double. Par exemple, si vous avez une table de la clientèle avec des doublons, vous pouvez déterminer que plus de 1 disque avec le même numéro de sécurité sociale est un domaine en double.
supprimer de LaTable
où pas dans uniqueField
(Select min (uniqueField) de TempTable T2
où T2.dupField = MyTable.dupField)
Vérifiez les résultats. Exécutez les mêmes requêtes de l'étape 1. Le nombre total de la table d'origine devrait être la différence entre le nombre compté avant que la requête de suppression et le nombre supprimé de la table. En outre, d'exécuter la requête distincte doit avoir le même nombre que la 1ère requête.