J'ai ce code à partir de ce lien: Comment puis-je supprimer des lignes en double?
;WITH cte AS (SELECT ROW_NUMBER() OVER (PARTITION BY person_id, date_work, hours ORDER BY ( SELECT 0)) RN FROM work_hours) DELETE FROM cte WHERE RN > 1
3 Réponses :
Oui - Vous ou devez introduire date_of_enterry champ ou un autre champ de vecteur comme bien sûr fort> il est valide si personne ne change les valeurs dans et si vos conditions s'assoient - alors vous pouvez utiliser la colonne et encore meilleur identité code>. Par exemple, si la colonne
ID code> est votre
int Identity code>, alors votre requête ressemblera à ceci:
identité code> colonne p>
heures code> comme votre Champ de vecteur au sein de la plage de regroupement de
person_id, date_work code> p>
strong> est d'avoir un index unique code> sur colonnes code> sur colonnes cod> Code> perseu_id, date_work, heures code>, il n'y aura aucune possibilité d'ajouter des doublons. P> P>
Ajouter Commandez par Heures de descesc CODE>
;WITH cte
AS (SELECT ROW_NUMBER() OVER (PARTITION BY person_id, date_work
ORDER BY hours DESC) RN
FROM work_hours)
DELETE FROM cte
WHERE RN > 1
Commander par Heures de rapport CODE> B> est une réponse acceptable, elle supprime une colonne en double avec un nombre inférieur d'heures. Merci pour votre réponse
Vous pouvez aussi le faire avec Linq à SQL Supprimer les duplicats dans la liste en utilisant la liste. LINQ , SQL avec groupe par http://www.simple-talk.com/sql/t-sql-programming/removing-duplicates-de-a-table-in-sql-server/ , et SQL distinct http://www.databasedev.co.uk/eliminate_duplicates.html . p>
Sauf si vous réservez une colonne pour cela, il n'ya aucun moyen de connaître la dernière ligne insérée. +1 sur les efforts cependant