天天看點

mysql left 笛卡爾積_實操 - mysql 表連接配接笛卡爾積 (joinleft join)

實操 - mysql 表連接配接笛卡爾積 (joinleft join)

1 為什麼兩張表連接配接會出現重複資料

2 表的連接配接過程是怎樣的?

舉例:

表 A:

1

表 B:

1

2

執行語句: select * from A join B on A.id = B.id;

順序如下:

join 形成的表:11

10

10

12

01

00

00

02

on 之後:

1 1

0 0

0 0

是以表連接配接後出現了重複資料

兩張表的關系存在一對多的關系, 是以就會出現重複情況

什麼是笛卡爾積呢?

就是兩張表連接配接的時候, 是通過笛卡爾積的方式連接配接

笛卡爾 (Descartes) 乘積又叫直積假設集合 A={a,b}, 集合 B={0,1,2}, 則兩個集合的笛卡爾積為 {(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)} 可以擴充到多個集合的情況類似的例子有, 如果 A 表示某學校學生的集合, B 表示該學校所有課程的集合, 則 A 與 B 的笛卡爾積表示所有可能的選課情況

是以兩個表連接配接後 (使用 join 逗号連接配接) 就是笛卡爾積

無論是 join 還是 left join, 都是先把表以笛卡爾積的方式連接配接, 然後通過 on 來篩選資料, join 隻顯示符合條件的資料, left join 不僅會顯示所有滿足條件的資料, 而且還會把主表沒有比對上的也顯示出來

mysql left 笛卡爾積_實操 - mysql 表連接配接笛卡爾積 (joinleft join)

left join 後面必須加上 on

mysql left 笛卡爾積_實操 - mysql 表連接配接笛卡爾積 (joinleft join)

來源: http://www.bubuko.com/infodetail-2483665.html