日期:2014-05-17  浏览次数:20897 次

在子查询中使用 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
这样不行?