Oracle SQL语法:内部联接

时间:2011-05-11 17:30:06

标签: sql oracle syntax inner-join

我现在无法访问Oracle数据库,所以我在这里发布我的问题:

以下语句是否有效的Oracle SQL语法?

SELECT a1
FROM t1 INNER JOIN t2

我特别想知道是否需要为内连接指定连接属性。

最佳, 将

4 个答案:

答案 0 :(得分:8)

你错过了ON

喜欢

SELECT a1
FROM t1 INNER JOIN t2
ON t1.SomeID = t2.SomeID

答案 1 :(得分:7)

所以,这是你想到的查询......

SQL> select e.ename
  2         , d.dname
  3  from emp e inner join dept d
  4  /
from emp e inner join dept d
                           *
ERROR at line 3:
ORA-00905: missing keyword


SQL>

我们可以看到,它失败了。 INNER JOIN语法要求我们提供要加入的列......

SQL> select e.ename
  2         , d.dname
  3  from emp e inner join dept d
  4      on ( d.deptno = e.deptno )
  5  /

ENAME      DNAME
---------- --------------
SCHNEIDER  ACCOUNTING
BOEHMER    ACCOUNTING
KISHORE    ACCOUNTING
ROBERTSON  RESEARCH
...
FEUERSTEIN HOUSEKEEPING
PODER      HOUSEKEEPING
TRICHLER   HOUSEKEEPING

21 rows selected.

SQL>

还有一种替代语法,即NATURAL JOIN。此语法将根据共享相同名称的所有列自动连接两个表。

SQL> select e.ename
  2         , d.dname
  3  from emp e natural join dept d
  4  /

ENAME      DNAME
---------- --------------
SCHNEIDER  ACCOUNTING
BOEHMER    ACCOUNTING
KISHORE    ACCOUNTING
ROBERTSON  RESEARCH
...
FEUERSTEIN HOUSEKEEPING
PODER      HOUSEKEEPING
TRICHLER   HOUSEKEEPING

21 rows selected.

SQL>

这是一个巧妙的技巧,但实际上不应该依赖于生产代码;这是一个等待发生的错误。

答案 2 :(得分:2)

您需要添加ON子句

SELECT a1
FROM t1 INNER JOIN t2 on t1.a1=t2.a1

答案 3 :(得分:1)

是的,你必须指定连接条件:

在t1.f = t2.f

上从t1 INNER JOIN t2开始