我已經閱讀了SO的許多帖子,並且我理解了where子句和on子句之間的區別。但其中大部分示例都是在RIGHT表格上過濾(使用左連接時)。如果我有如下查詢:左加入之前的SQL過濾器左表
select * from tableA A left join tableB B on A.ID = B.ID and A.ID = 20
返回值不是我所期望的。我會認爲它首先過濾左邊的表格,並只提取ID = 20的行,然後用tableB進行左邊的連接。
當然,這應該是技術上一樣做:
select * from tableA A left join table B on A.ID = B.ID where A.ID = 20
但我認爲表現會更好,如果你可以做一個加入之前過濾表。有人能夠告訴我如何處理這個SQL,並幫助我徹底理解這一點。
感謝您的回覆,但您可否詳細說明「當ID不是20,那麼列值爲NULL」。你的意思是tableB的ID不是20,那麼tableB中的所有列將爲空?這有一個用例嗎?或者應該在第一張桌上的過濾總是去哪裏? – TFK
@TFK。 。 。我修正了措辭。 –