Я пытаюсь отфильтровать таблицу, используя фильтр в предложении внешнего соединения, а не в предложении where. Когда я пытаюсь это сделать, я получаю неожиданные результаты. Вся таблица возвращается, как будто я вообще не применял фильтр.
Когда я запускаю этот пример, я получаю разные результаты для последних двух запросов. Я ожидал, что они будут иметь те же результаты, но это не так. Что здесь происходит?
declare @a table
(
id int
,content varchar(100)
)
declare @b table
(
id int
,content varchar(100)
)
insert into @a (id,content) values (1,'Apple')
insert into @a (id,content) values (2,'Banana')
insert into @a (id,content) values (3,'Orange')
insert into @b (id,content) values (1,'Juice')
insert into @b (id,content) values (2,'Peel')
insert into @b (id,content) values (3,'Julius')
--basic outer join
select * from @a a left join @b b on a.id=b.id
--outer join with where clause filter
select * from @a a left join @b b on a.id=b.id where a.id=1
--outer join with join clause filter
select * from @a a left join @b b on a.id=1 and a.id=b.id