удалить инструкцию, содержащую join

#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 раза, но повторная попытка сработала. Спасибо!