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