古詩詞大全網 - 成語用法 - MySQL中inner join 和 cross join 的區別

MySQL中inner join 和 cross join 的區別

Inner join:內連接,也叫等值連接,inner join產生同時符合A和B的壹組數據。

Cross join:交叉連接,得到的結果是兩個表的乘積,即笛卡爾積

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

Inner join 和 Cross join 的區別:

1、Cross join生成的是先生成笛卡爾集,然後on連接條件被視為了filter用於數據過濾,

Inner join是直接基於join condition做連接,生成的join集合就是最終的輸出結果,產生的中間數據更小。

2、Inner join結合ON子句使用;Cross join用於其它地方。

3、Cross join產生的是笛卡爾集,也就是 M*N 的集合,Inner join是內聯查詢,不是產生笛卡爾集。

4、Cross join不加條件限制,Inner join的on是加了條件限制的