我正在尝试使用外部联接子句中的过滤器而不是 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