SQL Server: почему этот запрос на удаление не работает? - PullRequest
1 голос
/ 10 ноября 2011

У меня есть 2 таблицы FinalList и RemoveTheseIDsList.Они оба имеют одинаковый первичный ключ ID.Я хочу удалить все строки из FinalList, которые находятся в RemoveTheseIDsList.Итак, я написал этот первый запрос:

Delete from FinalList
    Where FinalList.ID not in (Select ID from RemoveTheseIDsList)

Теоретически, этот запрос должен был удалить каждую строку из FinalList.Вместо этого он удалил 0. Я в итоге остановился на этом неуклюжем обходном пути (который работает):

Update FinalList set DeleteMe='Y'
    from FinalList FLL
    left join RemoveTheseIDsList REM on FLL.ID=REM.ID
    where REM.ID is null
Delete from FinalList where DeleteMe='Y'

Мой вопрос: почему этот первый запрос не сработал?Есть ли быстрое решение, которое сделает этот запрос и функциональным, и маленьким?

1 Ответ

4 голосов
/ 10 ноября 2011

Как вы говорите: «Я хочу удалить все записи из FinalList , которые находятся в RemoveTheseIDsList»

Так и должно быть:

Delete from FinalList
Where FinalList.ID IN (Select ID from RemoveTheseIDsList)

Но ваше обновлениеэто как не в, так что, возможно, попробуйте это:

Delete from FinalList
Where FinalList.ID NOT IN (Select RemoveTheseIDsList.ID from RemoveTheseIDsList)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...