这里是我的数据左连接TransactSQL返回我意外的结果 - 我对左连接的理解是错误的吗?
CREATE TABLE TempA (
ID INT IDENTITY(1,1),
Msg VARCHAR(20)
)
INSERT INTO TempA (Msg) values ('a')
INSERT INTO TempA (Msg) values ('b')
INSERT INTO TempA (Msg) values ('c')
CREATE TABLE TempB (
ID INT IDENTITY(1,1),
Msg VARCHAR(20)
)
所以TempB是空的。现在我运行以下查询
select a.*
from TempA a
left JOIN TempA B on a.id = b.id
它从TempA返回3行,如预期的那样好,至今为止。让我们在上面的查询中添加一个过滤器
select a.*
from TempA a
left JOIN TempA B on a.id = b.id
where b.msg = 'aa'
它不返回任何行给我。我认为,因为它是一个左连接,我应该从TempA表中获得3行。我错了吗?
注意:所有的例子查询是自联接。我认为你的意思是第二张桌子是“TempB”。这可以解释为什么下面的答案不起作用。 – Bill 2011-01-14 19:48:55