MySQL中inner join 和 cross join 的区别

2025-05-19 04:17:24
推荐回答(2个)
回答1:

区别:
(1)cross join生成的是先生成笛卡尔集,然后on连接条件被视为了filter用于数据过滤
(2)inner join是直接基于join condition做连接,生成的join集合就是最终的输出结果,产生的中间数据更小。实际上MySQL优化器会将这两条查询都优化成同一种join方式。

inner join:多表联接建立记录集是十分有用的,因为某些情况下,我们需要把数字数据类型显示为相应的文本名称,这就碰到了多表联接建立记录集的问题。

cross join:连接用于生成两张表的笛卡尔集。

回答2:

cross join就是不加条件限制,
inner join的on还是加了条件限制的
cross join是笛卡尔积,理论上不应该支持on语法,但是MySQL在这方面做的比较奇怪。
总共有五种join:cross,outer full,outer left,outer right和inner。除了cross之外都支持on语法。