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