选择语句上的 SQL 内连接

Posted

技术标签:

【中文标题】选择语句上的 SQL 内连接【英文标题】:SQL Inner join on select statements 【发布时间】:2010-12-28 18:36:01 【问题描述】:

我正在尝试对这样的 select 语句进行内部联接:

select *
from (select* from bars  where rownum <= 10 )as tab1
inner join (select * from bars  where rownum <= 10 )as tab2
on tab1.close=tab2.close

我收到以下错误: ORA-00933 SQL 命令未正确结束 任何帮助将不胜感激,谢谢!

【问题讨论】:

【参考方案1】:

只需从您的查询中删除 as

select *
from (select* from bars  where rownum <= 10 ) tab1
inner join (select * from bars  where rownum <= 10 ) tab2
on tab1.close=tab2.close

【讨论】:

嗨,egorius,谢谢,它成功了。我仍然不明白为什么有时 oracle 接受 as 有时不接受 'As' 可以(可选地)在 COLUMN 别名之前使用。 TABLE 别名不能在前面加上“as”。例如:“select count(*) as cnt from dual d”。 你可能想看看 SELECT 语法图(它很大,但定义了确切的语法):download.oracle.com/docs/cd/B10501_01/server.920/a96540/…【参考方案2】:

我相信错误来自您需要分号来结束语句。否则,选择对我来说看起来不错。

【讨论】:

【参考方案3】:
select * from 
((select* from bars  where rownum <= 10 )as tab1
inner join (select * from bars  where rownum <= 10 )as tab2
on tab1.close=tab2.close)

【讨论】:

【参考方案4】:

只需在 ')' 和 'as' 之间添加一个空格:

select * from (select* from bars  where rownum <= 10 ) as tab1
 inner join
 (select * from bars  where rownum <= 10 ) as tab2
 on
 tab1.close=tab2.close

【讨论】:

以上是关于选择语句上的 SQL 内连接的主要内容,如果未能解决你的问题,请参考以下文章

SQL中的选择内连接选择

使用内连接 SQL 语句时未定义的索引

如何将带有内连接语句的 Sql 查询转换为带有 Where 语句的 sql 查询(语句中没有内连接)

Sql = 想要使用内部连接语句但不使用表

比较内连接和外连接 SQL 语句

内连接嵌套在更新语句 SQL 中