只想查询数据集中满足条件的前10条记录

ouyangke 2008-12-05 10:04:39
以前一直用SQL_Server.
我查询数据集中满足条件的前10条记录是这样写的
select top 10 * from 视图A

到了oracle他就提示出错了.请问这类似的语句在oracle怎么写?
...全文
403 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangsong145 2008-12-06
  • 打赏
  • 举报
回复
select * from 视图A where rownum<=10
junying2yu 2008-12-05
  • 打赏
  • 举报
回复
楼主的条件是不是有用索引,类型是不是匹配
请一一检查一下,不一定就是加了那个才变慢的
codearts 2008-12-05
  • 打赏
  • 举报
回复
楼上的楼主,正常查询是在pl/sql developer里执行的吧,这个工具是自已加了rownum处理了的。
ouyangke 2008-12-05
  • 打赏
  • 举报
回复
我是楼主.你们说的方法我试过了.效率非常低.

我要查询的数据里面有几千万条数据.正常查询直接就有结果了.

但是加了rownum <11 等半天也没结果出来.
codearts 2008-12-05
  • 打赏
  • 举报
回复
正常的应该是:

select *
from (select * from 视图 order by ..)
where rownum <= 10;
leiht 2008-12-05
  • 打赏
  • 举报
回复
上面的人已经把问题解决了,我不妨再补充几句,希望对楼主有用。
Rownum是Oracle表的一个伪列,Oracle用它来保存记录的行号。
但Rownum有个怪癖:最初,第一条记录的Rownum为1,如果第一条不满足条件就假装删除第一条记录,而把原来的第二条记录(现在的第一条记录)的 Rownum设为1,以此类推。这就导致了在用Rownum做条件判断时(Select的Where子句)对关系符<,<=,>,& gt;=等有了一定限制(自己分析)。
解决的方法就是先把Rownum列保存成表的实列,在进行查询。
sunnyxjl 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hdhai9451 的回复:]
oracle 没有top关键字,但查询时可以自动产生列rownum,也就是结果集有多少行,就等于多少rownum,
所以可以用rownum判断返回多少行
[/Quote]顶
Andy__Huang 2008-12-05
  • 打赏
  • 举报
回复
oracle 没有top关键字,但查询时可以自动产生列rownum,也就是结果集有多少行,就等于多少rownum,
所以可以用rownum判断返回多少行
sleepzzzzz 2008-12-05
  • 打赏
  • 举报
回复
xrongzhen 2008-12-05
  • 打赏
  • 举报
回复
已经解决了啊 UP JF
mantisXF 2008-12-05
  • 打赏
  • 举报
回复
SELECT * FROM 视图A WHERE ROWNUM <= 10;
[Quote=引用楼主 ouyangke 的帖子:]
以前一直用SQL_Server.
我查询数据集中满足条件的前10条记录是这样写的
select top 10 * from 视图A

到了oracle他就提示出错了.请问这类似的语句在oracle怎么写?
[/Quote]
guolin_cai 2008-12-05
  • 打赏
  • 举报
回复
select * from a where rownum<11
sleepzzzzz 2008-12-05
  • 打赏
  • 举报
回复
优化你的视图语句.

跟是否加rownum好象关系不大.


[Quote=引用 9 楼 ouyangke 的回复:]
我是楼主.你们说的方法我试过了.效率非常低.

我要查询的数据里面有几千万条数据.正常查询直接就有结果了.

但是加了rownum <11 等半天也没结果出来.
[/Quote]

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧