У меня есть два запроса, которые, по моему мнению, означают одно и то же, но я продолжаю получать разные результаты, и я надеялся, что кто-то сможет объяснить, как они отличаются:
1
select *
from table1 a
left join table2 b on a.Id = b.Id and a.val = 0
where b.Id is null
2
select *
from table1 a
left join table2 b on a.Id = b.Id
where b.Id is null
and a.val = 0
Смысл запроса - найти строки, которые находятся в table1 и val = 0, которых нет в table2.
Я также использую sql server 2008, но сомневаюсь, что это должно иметь значение.