ORACLE Natural Join返回空结果"没有选择行"两个表

时间:2016-03-07 21:33:37

标签: sql oracle natural-join

HELLO我的主要目标是获取x表并加入它们而不是获取重复列用于检测连接操作的行。 所以我发现自然联接是我所寻找的:

不想要内部联接的结果:

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

自然加入的好结果:

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

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

select * from guilds natural join players;

guilds表有guild_id,玩家有guild_id。

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

1 个答案:

答案 0 :(得分:1)

如果您执行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