左连接表,找到null和匹配值

时间:2015-06-22 14:41:26

标签: sql sql-server join

我有两个2桌t1(years int, numOfppl int)t2(years int, numOfppl int)。 t1包含2001年至2010年之间的年份,t2包含2003-2005和2007-2010之间的年份

我想查询类似的结果

t1.years   t1.numOfppl  t2.yeras   t2.numOfppl
 2001        7            null       null
 2002        6            null       null
 2003        4            2003       7
...         ...
 2006        8            null       null
 2007        4            2007        3

我尝试像那样查询

select t1.years, t1.numOfppl, t2.years, t2.numOfppl from t1 
left join t2 on t1.years=t2.years 

然后结果无法显示空值,仅从2003开始,但如果我删除了t1.years=t2.years,那么它会生成交叉连接等结果。

1 个答案:

答案 0 :(得分:1)

试试FULL OUTER JOIN。这是sqlfiddle。它会产生你期待的操作 SQLFiddle

select t1.years, t1.numOfppl, t2.years, t2.numOfppl from t1 
full outer join t2 on t1.years=t2.years