Существует другая ситуация: подзапрос может ничего не возвращать.SQL Server не работает должным образом, если предложение NOT IN возвращает пустой список.У меня есть запрос, подобный следующему:
select * from table where id not in (select id from tableB where somecondition(x))
Когда подзапрос содержит список идентификаторов, запрос вернет данные, как ожидалось.Но когда подзапрос ничего не возвращает, запрос все равно возвращает данные, но затем застревает.
Я изменил запрос на следующий и решил проблему:
select * from table where id not in (select id from tableB where somecondition(x) **union all select 0**)
, которая гарантируетподзапрос будет содержать хотя бы одно число.