天天看點

sql join詳解

預設join方式,如果不加修飾詞

隻傳回兩個表中聯結字段相等的行

傳回包括左表中的所有記錄和右表中聯結字段相等

與左連接配接相反

傳回左表和右表中的所有行。當某行在另一個表中沒有比對行時,則另一個表的選擇清單列包含空值。

即左連接配接、右連接配接結果的合并

使用等值以外的條件來比對左、右兩個表中的行

表Article和表ArticleComment分别表示“文章”和“文章評論”,ArticleComment有Article外鍵ArticleId。表設計為:

sql join詳解
sql join詳解

表Article資料如下:

sql join詳解

表ArticleComment資料如下:

sql join詳解

需要注意的是,嚴格來說,任意的ArticleComment都應該有外鍵ArticleId,這裡為了說明join,沒有嚴格要求,ArticleId可以為空。

結果:

sql join詳解
sql join詳解
sql join詳解
sql join詳解
sql join詳解

Left right join 多表的連接配接順序

多表左/右連接配接,表的連接配接順序也可以影響查詢速度

左連接配接時,應該把小表放在前面連接配接

例子:

A、B、C三表左連接配接

情況1:

A先和B連接配接,得到100條記錄

100條記錄再和C左連接配接

情況2:

A先和C連接配接,得到50條記錄

50條記錄再和B左連接配接

右連接配接時,把小表放在後面連接配接