【发布时间】:2011-02-07 09:05:39
【问题描述】:
也许是一个愚蠢的问题,但请考虑以下 2 个表格:
T1
Store Year
01 2009
02 2009
03 2009
01 2010
02 2010
03 2010
T2
Store
02
为什么这个 INNER JOIN 会给我想要的结果(过滤 ON 子句中的 [year]):
select t1.*
from t1
inner join t2
on t1.store = t2.store
and t1.[year] = '2009'
Store Year
02 2009
为什么 LEFT OUTER JOIN 包含 2010 年的记录?
select t1.*
from t1
left outer join t2
on t1.store = t2.store
and t1.year = '2009'
where t2.store is null
01 2009
03 2009
01 2010
02 2010
03 2010
我必须在“WHERE”子句中编写 [year] 过滤器:
select t1.*
from t1
left outer join t2
on t1.store = t2.store
where t2.store is null
and t1.year = '2009'
01 2009
03 2009
就像我说的那样,也许是一个愚蠢的问题,但它困扰着我!
【问题讨论】:
-
使用降价来格式化你的代码。这样,您就不必用
<br />标记来混淆它,并且您的表格列将正确排列(即使用空格而不是制表符)。 -
唯一愚蠢的问题是没有被问到的问题。 ;-)
标签: sql tsql join outer-join