通常在执行左连接时,我不会在同一行中使用ON
和AND
,因为我过去曾遇到问题。相反,我更喜欢将任何其他条件放在可靠的WHERE
子句中,以避免这种麻烦。但是今天,出于好奇,我想提出这个问题,并最终澄清。
问题:当我在LEFT JOIN
中使用“额外”条件时,实际发生了什么?为什么它的行为与WHERE
不同?
示例查询
create table #a
(
id int,
name varchar(3)
)
create table #b
(
id int,
name varchar(3)
)
insert into #a
select 1, 'abc'
union
select 2, 'def'
union
select 3, 'ghi'
insert into #b
select 1, 'abc'
union
select 2, 'def'
select * from #a a left join #b b on a.id = b.id
where a.id = 3
select * from #a a left join #b b on a.id = b.id
and a.id = 3