у меня есть два запроса, которые я думал, означал то же самое, но я получаем разные результаты, и я надеялся, что кто-то может объяснить, как они отличаются:Семантическая разница между запросами присоединиться
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
точка запрос, чтобы найти те строки, которые находятся в таблица1 и Вале = 0, что не в table2.
Я также использую SQL Server 2008, но я сомневаюсь, что это имеет значение.
Это не вернет ничего, если в обеих таблицах есть какой-либо идентификатор, так как существо всегда будет истинным. Я думаю, вы думаете о том, чтобы преобразовать соединение в крест, но просто не добрались до конца. –