关于 cross join (交叉连接)和 natural join(自然连接)

关于 cross join (交叉连接)和 natural join(自然连接)
1. cross join 就是笛卡尔积
那看起来好象和 inner join 是一样的,在 SQL 标准中定义的是 cross join 就是没有条件的 inner join。在 mysql 中,不区分,这两个等价。

2. natural (left) join 是把两个表名字一样的列,做相等条件处理,比如:

t1
id1 name

t2
id2 name

那么 select t1.id1, t2.id1, t1.name from t1 natural join t2 就等价

select t1.id1, t2.id1, t1.name from t1 join t2 on (t1.name = t2.name)

自动把一样名称的列(name)做了个相待条件处理,多列也会同时处理。

所以,这两种 join 没人用是有原因的。

cross join 没意义,一般用逗号就可以了。

natural 降低了可读性,不建议使用。

你可能感兴趣的:(关于 cross join (交叉连接)和 natural join(自然连接))