這裏是我的數據左連接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