У меня есть SQL Server, содержащий повторяющиеся строки с конкретным столбцом таблицы tableObj
, который я хочу удалить. Я использую запрос:
DELETE tableObj
WHERE id NOT IN
(SELECT MIN(id)
FROM tableObj
GROUP BY column_name);
Этот column_name
является дубликатом, и я хочу удалить все остальные строки, содержащие тот же столбец. Теперь, когда я выполняю этот запрос, я получаю следующую ошибку:
The DELETE statement conflicted with the REFERENCE constraint "some_value". The conflict occurred in database "UH", table "Test.otherTable", column 'column_name'.
Это otherTable
, с которым существует однозначное отображение tableObj
. Теперь, как мне удалить эти ссылки вместе с удалением дубликатов.
Вот как я нахожу дубликаты:
SELECT column_name, COUNT(*)
FROM tableObj
GROUP BY column_name
HAVING
COUNT(*) > 1
, который дает мне результат как:
column_name (no-specific column)
12345 2
23414 3
...........
...........
Отображение сохраняется в таблице отображения, как:
tableObjID otherTableId
Желаемый результат после выполнения запроса DELETE
- получить (COUNT = 1):
column_name (no-specific column)
12345 1
23414 1
...........
...........