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