读书人

在子查询中使用 order by 总是告错.哪

发布时间: 2012-01-19 00:22:28 作者: rapoo

在子查询中使用 order by 总是告错.谁知道解决办法?
oracle 8.0版本,在子查询中使用 order by 总是告错.
例如需要从学生信息表中提取分数列前5名的学生的姓名和成绩,使用以下语句:

Select name, score From
(Select name, score From studentInfo Order By score)
Where (rowNum < 6)
Order By rowNum

执行时报告错误:ORA-00907:missing right parenthesis
而如果把子查询中的 Order By score 去掉,则运行正常,但显然不是所要的结果.
在几台机器上执行都有上述问题.

是oracle 的版本问题吗?但业主只能用这个版本,有其他替代的语句吗?




[解决办法]
Select name, score From
(Select name, score From studentInfo Order By score) t
Where (rowNum < 6)
Order By rowNum

[解决办法]
--同等语句

Select name, score from studentInfo a
Where (Select count(*) from studentInfo where a.Score> Score) <5
[解决办法]
oracle8不支持order by 嵌套字查的.
可以用表的法解.
create table tmp as Select name, score From studentInfo Order By score
select name, score From tmp where rowNum <6 Order By rowNum
drop table tmp
[解决办法]
Select name, score From
(Select name, score From studentInfo Order By score desc)
Where rowNum < 6
这样不行?

读书人网 >oracle

热点推荐