ORACLE 自然连接返回空结果"no rows selected"两个表具有相同的列



HELLO 我的主要目标是获取 x 个表并连接它们,而无需获取重复的列,用于检测连接操作的行。所以我发现自然连接是我正在寻找的:

不需要内部连接的结果:

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

自然连接效果良好:

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

问题是当我尝试对其他表(不是用户)执行相同的操作时我得到零结果):

select * from guilds natural join players;

公会表有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

最新更新