我正在使用SQL Server(我相信它是2005版本)。
我有一个名为TableA
的表,它有2列和439行(每一行都是独特的)。
+----------+
|ID | Name |
+----------+
我有一个名为TableB
的表格,它有35列和数十万行数据(每一行也都是唯一的)。
+------------------------------------------------------------------------------+
|Date | ID | Name | Blah1 | Blah2 | ... | Hour1 | Hour2 | Hour3 | ... | Hour24 |
+------------------------------------------------------------------------------+
每一行在TableB
中都有每小时的观测数据以及其他的信息。现在为了测试目的,我只对今天的日期感兴趣,即2013年4月19日。如果我执行以下操作:
Select count(*)
from TableB
where Date = '4/19/2013 12:00:00 AM'
我得到了10526,这个数字是正确的,因为每天都有10526个不同的位置提供每小时的观测数据。
我想要对TableA和TableB进行左连接on a.id = b.id
,这应该会产生一个有439行的结果。
不幸的是,结果只有246行。这怎么可能呢?难道不是LEFT JOIN
应该返回TableA
中的所有行,无论是否在TableB
中有匹配的行吗?
*编辑*
我使用的完整查询如下:
select *
from TableA as a
left join TableB as b on a.id = b.id
where RealDate = '4/20/2013 12:00:00 AM'