ORACLE Natural Join returns 空结果 "no rows selected" 两个表具有相同的列

ORACLE Natural Join returns empty results "no rows selected" have same columns both tables

你好,我的主要目标是获取 x tables 并加入它们 w/o 获取重复的列,用于检测连接操作的行。 所以我发现自然连接是我一直在寻找的东西:

不需要内部连接的结果:

http://s11.postimg.org/ujtadadj7/image.png

自然连接的好结果:

http://s28.postimg.org/yy6tmca0d/image.png

问题是当我尝试对其他 table(不是用户)做同样的事情时 我得到零结果 ):

select * from guilds natural join players;

公会 table 有 guild_id 而玩家有 guild_id.

为什么会这样? 我应该如何实现我的目标还有另一种方法吗? 请帮助我,我整天都在寻找解决方案。 . . 感谢所有愿意提供帮助的人!

如果您执行 NATURAL JOIN,您的连接将在连接表共有的每一列上完成;因此,如果您有多个同名列,它们将全部用于连接。这可能就是您的结果中没有行的原因。

INNER JOIN 可以像您一样完成,使用 ON (tab1.field = tab2.field)USING 子句,无需重复字段;

SQL> select *
  2  from dual
  3  natural join dual;

DUMMY
----------
X

SQL> select *
  2  from dual d1
  3  inner join dual d2 on (d1.dummy = d2.dummy);

DUMMY      DUMMY
---------- ----------
X          X

SQL> select *
  2  from dual d1
  3  inner join dual d2 using(dummy);

DUMMY
----------
X