#sql #join #sql-server-2012 #duplicates #sql-delete
#sql #Присоединиться #sql-server-2012 #дублирует #sql-delete
Вопрос:
я обнаружил повторяющиеся записи в своей базе данных годичной давности. я пытаюсь их очистить, я нашел все идентификаторы, которые мне нужно удалить, используя:
select id
from impWthrDta as a
right join (
SELECT dte, rltn
FROM impWthrDta
GROUP BY dte, rltn
HAVING count(*) > 1
) as b
on a.dte = b.dte
and a.rltn = b.rltn
where id >= '0'
order by a.rltn, a.dte
почему я не могу просто заменить
select *
с помощью
delete
Ответ №1:
Вы можете. Просто добавьте инструкцию DELETE и используйте свой запрос в качестве фильтра для идентификаторов:
DELETE FROM WhateverTable
WHERE ID IN
(select id
from impWthrDta as a
right join (
SELECT dte, rltn
FROM impWthrDta
GROUP BY dte, rltn
HAVING count(*) > 1
) as b
on a.dte = b.dte
and a.rltn = b.rltn
where id >= '0')
Комментарии:
1. я думал, что пробовал это 3 раза, но повторная попытка сработала. Спасибо!