我现在无法访问Oracle数据库,所以我在这里发布我的问题:
以下语句是否有效的Oracle SQL语法?
SELECT a1
FROM t1 INNER JOIN t2
我特别想知道是否需要为内连接指定连接属性。
最佳, 将
答案 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开始