我试图筛选出使用过滤器的表外连接子句中,而不是在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