This:
DELETE j1
FROM ICD_Junction AS j1
WHERE EXISTS
( SELECT 1
FROM ICD_Junction AS j2
WHERE j2.KHA_ID = j1.KHA_ID
AND j2.ICD_FK = j1.ICD_FK
AND j2.ID < j1.ID
)
;
удалит для каждого KHA_ID
и ICD_FK
все, кроме одной соответствующей строки ICD_Junction
.(В частности, он сохранит тот, у которого наименьшее значение ID
, и удалит остальное.)
После того, как вы запустите вышеописанное, вы должны исправить любой код, вызвавший дублирование, и добавить уникальное ограничение для предотвращения повторения этого.
(Отказ от ответственности: не тестировался, и с тех пор, как я в последний раз использовал SQL Server, прошло некоторое время.)
Отредактировано, чтобы добавить: Если я правильно понимаю ваш комментарий, вам также нужна помощь с запросом, чтобы найти дубликаты?Для этого вы можете написать:
SELECT KHA_ID,
ICD_FK,
COUNT(1) -- the number of duplicates
FROM ICD_Junction
GROUP
BY KHA_ID,
ICD_FK
HAVING COUNT(1) > 1
;