J'ai besoin d'une boucle dans les enregistrements d'une table de base de données et d'éléments de groupe ayant un contenu similaire. Je veux faire correspondre sur une seule colonne dans la base de données et s'il y a des enregistrements similaires, je veux extraire l'ID de chaque ligne et l'enregistrer dans une autre table, par exemple. Si j'avais 10 lignes similaires, elles seraient liées à un enregistrement "en-tête" dans une autre table.SQL pour détecter des enregistrements similaires dans la même table de base de données
est Ci-dessous quelques pseudocode simple pour illustrer ce que je dois faire:
For Each record in table
If There is a similar record in header table Then
Link this record to matching header table record
Else
Create new Header record and link this record
End If
End For
J'utilise MSSQL 2008 avec recherche de texte intégral qui me fournira le mécanisme que je dois choisir des dossiers similaires. Au moment où je prévois de créer la boucle quatre dans C# Code et faire la correspondance et l'enregistrement dans SQL en appelant une procédure stockée pour vérifier l'enregistrement correspondant. Quelque chose me dit que tout devrait être fait dans une seule procédure stockée (et quelque chose d'autre me dit de garder la logique dans le code!).
Existe-t-il une façon plus simple de le faire en SQL?
merci pour l'exemple, mais dans cet exemple, il ne fonctionnerait que sur les doublons exacts. J'ai besoin de vérifier les enregistrements similaires qui ne sont peut-être pas exactement les mêmes. – BradB
vous pourriez ajouter à la clause having une autre condition 'OR email LIKE '% similar%'' pour vérifier les éléments similaires .. – Vishal
Je prévois d'utiliser FTS car l'opérateur LIKE n'est pas assez sophistiqué pour mes besoins. Avez-vous déjà utilisé un FTS JOIN dans le style de votre exemple? Faisable? – BradB