以前一直用SQL_Server.
我查询数据集中满足条件的前10条记录是这样写的
select top 10 * from 视图A到了oracle他就提示出错了.请问这类似的语句在oracle怎么写?

解决方案 »

  1.   

    select * from a where rownum<11
      

  2.   

    SELECT * FROM 视图A WHERE ROWNUM <= 10;
      

  3.   

    已经解决了啊   UP  JF
      

  4.   

    oracle 没有top关键字,但查询时可以自动产生列rownum,也就是结果集有多少行,就等于多少rownum,
    所以可以用rownum判断返回多少行
      

  5.   

        上面的人已经把问题解决了,我不妨再补充几句,希望对楼主有用。
        Rownum是Oracle表的一个伪列,Oracle用它来保存记录的行号。
        但Rownum有个怪癖:最初,第一条记录的Rownum为1,如果第一条不满足条件就假装删除第一条记录,而把原来的第二条记录(现在的第一条记录)的 Rownum设为1,以此类推。这就导致了在用Rownum做条件判断时(Select的Where子句)对关系符<,<=,>,& gt;=等有了一定限制(自己分析)。
          解决的方法就是先把Rownum列保存成表的实列,在进行查询。
      

  6.   

    正常的应该是:select *
      from (select * from 视图 order by ..)
     where rownum <= 10;
      

  7.   

    我是楼主.你们说的方法我试过了.效率非常低.我要查询的数据里面有几千万条数据.正常查询直接就有结果了.但是加了rownum <11 等半天也没结果出来.
      

  8.   

    楼上的楼主,正常查询是在pl/sql developer里执行的吧,这个工具是自已加了rownum处理了的。
      

  9.   

    优化你的视图语句.跟是否加rownum好象关系不大.
      

  10.   

    select * from 视图A where rownum<=10