【发布时间】:2014-12-17 15:46:32
【问题描述】:
在执行LEFT JOIN 时,我通常不会在与ON 相同的行中使用AND,因为我过去曾遇到过问题。我宁愿不进入这个泡菜,而是在WHERE 子句中添加任何附加条件,这是可靠的。但是今天,出于好奇,我很想提出这个问题,并一劳永逸地弄清楚。
问题:当我使用“exta”条件时,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
【问题讨论】:
标签: sql sql-server