NATURAL JOIN 是一种 JOIN 操作,它根据要连接的两个表中的公共列为您创建隐式连接子句。NATURAL JOIN 可以是 INNER 联接、LEFT OUTER 联接或 RIGHT OUTER 联接。默认是 INNER 连接。资源
因此,如果两个表都有一个公共列,自然连接可以是实现内部连接的一种简写方式。
考虑下表:
SELECT * FROM t1;
/*
ID PLANET
---------- --------
1 jupiter
2 earth
*/
我们将表连接到自身:
SELECT first.id, first.planet FROM t1 first INNER JOIN t1 second ON first.id=second.id;
/*
ID PLANET
---------- --------
1 jupiter
2 earth
*/
尝试用自然连接符号做同样的事情:
SELECT id, planet FROM t1 NATURAL JOIN t1;
/*
ID PLANET
---------- --------
1 jupiter
1 jupiter
2 earth
2 earth
*/
鉴于这里的自然连接是使用内部连接实现的,为什么多行?
更新:
使用表别名运行相同的连接有不同的输出:
SELECT id, planet FROM t1 first NATURAL JOIN t1 second;
/*
ID PLANET
---------- --------
1 jupiter
2 earth
*/