1. 程式人生 > >左連線 右連線 全連結 內連線 詳解

左連線 右連線 全連結 內連線 詳解

題目查詢下列兩表的對應關係

全連結 :相當於集合的並集 全部都會聯合一次


在查詢對應關係的時候


A表10000行,B表10000行,都不算大.

但是全相乘,在記憶體中生成一個非常大的資料. 10000*10000行.
另外:索引沒利用

雖然全連結很常用 很多人用,但是它的效率極低,生成n*m行資料再篩選出來

左連結:

左連線的語法:

假設A表在左,不動,B表在A表的右邊滑動.

A表與B表通過一個關係來篩選B表的行.

語法:

A left join B on 條件  條件為真,B表對應的行,取出

A left join B on 條件

這一塊,形成的也是一個結果集,可以看成一張表 設為C

既如此,可以對

C表作查詢,自然where,group ,having ,order by ,limit 照常使用



以男生為基準,女生表從上往下逐個匹配,由於次方法用索引,所以效率高很多!

沒有另一半的,用NULL補齊


以女生為基準,生表從上往下逐個匹配

注意,a left join b,並不是說a表的就一定在左邊,只是說在查詢資料時,以a表為準

右連線:

用右連線. 剛才是 女生 left join 男
用右連線,只需 男 right join 女

 就是一個相對的關係 你在我左邊  那麼 我就在你右邊  明白了左連結  反過來就明白右連線了!

左右連線是可以互換的

A left join B, 就等價於 

B right join A

注意:既然左右連線可以互換,儘量用左連線,出於移植時相容性方面的考慮.


內連線

如果從集合的角度

A inner join B

和 left join /rightjoin的關係

答: 內連線是左右連線的交集


1  女生左連結   中本來有的屌絲->null 沒有了

2 男生左連結 中本來有的寶釵 ->null 沒有了

內連線是左右連線的交集

經典左連結面試題

按以上的形式查詢


A left join B on 條件

這一塊,形成的也是一個結果集,可以看成一張表 設為C

既如此,可以對C表作查詢,自然where,group ,having ,order by ,limit 

照常使用


可以無限左連結 並且可以把它看成一個表 然後進行having 篩選