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是加了条件限制的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-02
INNER JOIN是交集
CROSS JOIN是并集
相似回答