Как я могу удалить повторяющиеся записи, на которые ссылаются внешние ключи на сервере SQL? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть ситуация на SQL сервере, где у меня есть повторяющиеся данные, но в таблице, указанной как внешний ключ. Таблицы выглядят следующим образом:

  • Шаблон (id, имя, описание, автор)
  • TemplatesToAttachements (id, templateId, attachmentId)
  • Attachment (id, description, автор, цель)

Я заметил, что продублировал Attachments для Template. Глядя в базу данных, из-за ошибки я видел несколько TemplatesToAttachements записей, добавленных для дублированных Attachments для одного и того же Template.

Пример:

Может ли кто-нибудь мне помочь удалите те лишние TemplatesToAttachements записи, которые дублировали Attachments (под дублированным вложением я подразумеваю 2 вложения с одинаковым описанием, автором и целью).

Я написал здесь образец таблиц:

http://www.sqlfiddle.com/#! 18 / 4ef0a0

Большое спасибо.

1 Ответ

0 голосов
/ 08 мая 2020

Попробуйте использовать это:

DELETE TemplatesToAttachements
FROM (
    SELECT Rn = ROW_NUMBER OVER (PARTITION BY description, author, purpose ORDER BY id),
           id
    FROM Attachment     
) AS A
INNER JOIN TemplatesToAttachements ON TemplatesToAttachements.attachmentId = A.Id
WHERE Rn > 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...