Использование SQL Server 2008. Я пытаюсь удалить несколько повторяющихся строк в таблице. Здесь перечислены таблицы и столбцы, которые имеют отношение:Удаление повторяющихся строк, отсутствующих в таблице ссылок
ItemTable
----------
Id - autoincrement, PK
ItemLabel - the actual identifier of the items
Linktable
----------
Id - autoincrement, PK
ItemId - the Id from ItemTable
RelatedItemId - the Id from RelatedItemTable
RelatedItemTable
------
no need to touch this with the query..
Так таблица ссылки не содержит фактический идентификатор элементов, но идущий номер строки из двух таблиц
Что нуждается Достигнуто: ItemTable содержит строки, которые имеют дубликат ItemLabel, где другая указана в таблице ссылок (с значением столбца Id), а другая нет. Из ItemTable следует удалить те, которые не связаны. Я знаю, как выбирать повторяющиеся строки, используя count и group by, но не смог выяснить, как удалить только те, которые не существуют в таблице ссылок. ItemTable также содержит дубликаты элементов без отношения, один из них должен оставаться (не имеет значения, какой).
http://www.sqlfiddle.com/#!3/9d181 Вот скрипта SQL с фиктивными данными.
P.S. Не спрашивайте, почему таблица ссылок использует текущий идентификатор вместо фактического идентификатора (который может быть PK'd) ... это устаревшая система.
Первые два будут удалять все повторяющиеся строки AFAIK, проблема в том, что дубликат, который находится в таблице ссылок, должен оставаться неповрежденным. Третий запрос ничего не возвращал, когда я менял DELETE на SELECT * .. –
@TeemuTerho Лучше всего было бы разместить некоторые выборочные данные вместе с ожидаемым выходом. Если вы это сделаете, я уверен, что многие люди здесь могут дать вам ответ :) –
@TeemuTerho Я обновил свой ответ, я считаю, что он делает то, что ожидается, см. SQL Fiddle ... –