select * from Z_YXJK_DMDH where (rownum>=500) and (rownum<=600) 
这是一个例子:
   我的意思是:如果数据表中有许多记录(如1000 条) 我现在只想查询其中第500-600之间的100记录,请问以上这样的写法有问题吗?我怎么查询不出来结果?
请各位解答一下.

解决方案 »

  1.   

    select row_id from
    (select rownum row_id from Z_YXJK_DMDH order by 字段)
    where (row_id>=500) and (row_id<=600) 
    试一试
      

  2.   

    select *,rn from (select a.*,rownum rn from Z_YXJK_DMDH a) t
    where t.rn>=500 and t.rn<=600
      

  3.   

    顶一下
    我在通过java连接Oracle时也尝试这样查询
    结果也是无法查询
      

  4.   


    SQL> SELECT * FROM EMPLOYEES WHERE ROWNUM>=1 AND ROWNUM<=10;EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL
    ----------- -------------------- ------------------------- ---------------------
            100 Steven               King                      SKING
            101 Neena                Kochhar                   NKOCHHAR
            102 Lex                  De Haan                   LDEHAAN
            103 Alexander            Hunold                    AHUNOLD
            104 Bruce                Ernst                     BERNST
            105 David                Austin                    DAUSTIN
            106 Valli                Pataballa                 VPATABAL
            107 Diana                Lorentz                   DLORENTZ
            108 Nancy                Greenberg                 NGREENBE
            109 Daniel               Faviet                    DFAVIET10 rows selected.
      

  5.   

    上面的方法不行

    select first_name from employees where rownum<=20
    minus
    select first_name from employees where rownum<=10;
    方法可以的
      

  6.   

    注意:rownum只能用符号(<、<=、!=)。 
                select * from tablename where rownum != 10;返回的是前9条记录。 
                不能用:>,>=,=,Between...and。由于rownum是一个总是从1开始的伪列,Oracle 认为这种条件 只能用
    select *
    from table_name
    where rownum < N
    minus
    select *
    from table_name
    where rownum < M就可以选中 M 与 N之间的。
      

  7.   

    select * from Z_YXJK_DMDH where (rownum>=500) and (rownum<=600) 楼主,这个方法可行,但是你在做的时候表前面最好加上SCHEMA,这样就没有问题.
      

  8.   

    select * from (select Z_YXJK_DMDH.*, rownum as rid from Z_YXJK_DMDH where rownum<=600) where rid >= 500
      

  9.   

    SQL> SELECT * FROM EMPLOYEES WHERE ROWNUM>=1 AND ROWNUM<=10;EMPLOYEE_ID FIRST_NAME           LAST_NAME                 EMAIL
    ----------- -------------------- ------------------------- ---------------------
            100 Steven               King                      SKING
            101 Neena                Kochhar                   NKOCHHAR
            102 Lex                  De Haan                   LDEHAAN
            103 Alexander            Hunold                    AHUNOLD
            104 Bruce                Ernst                     BERNST
            105 David                Austin                    DAUSTIN
            106 Valli                Pataballa                 VPATABAL
            107 Diana                Lorentz                   DLORENTZ
            108 Nancy                Greenberg                 NGREENBE
            109 Daniel               Faviet                    DFAVIET10 rows selected.ROWNUM>=1 AND ROWNUM<=10; 把这个改一下,改为ROWNUM>=10 AND ROWNUM<=12;
    你去试一下,看可不可以.
      

  10.   

    select * from (select Z_YXJK_DMDH.*, rownum as rid from Z_YXJK_DMDH where rownum<=600) where rid >= 500可以的
      

  11.   

    UP...
    select * from(select *,rownum as num from Z_YXJK_DMDH where rownum<=600)where num>=500
    rownum没有">,>=",要另起一个别名.
      

  12.   

    rownum是伪列,代表已经查询到的记录的行序号。还未查到的记录是没有rownum的。
    因此ROWNUM>=1 AND ROWNUM<=10是可以查到前10条记录但是不能证明
    ROWNUM>=500 AND ROWNUM<=600可以查处500~600的501条记录。
    ROWNUM>=1 AND ROWNUM<=10在逻辑上相当于ROWNUM<=10
    正确的方法是:
    select * from (select Z_YXJK_DMDH.*, rownum as rid from Z_YXJK_DMDH where rownum<=600) where rid > 500
    或者
    select * from Z_YXJK_DMDH where rownum<=600
    minus
    select * from Z_YXJK_DMDH where rownum<=500
    在效率上推荐前一种
      

  13.   

    要想用rownum必须用铅套  因为他没有ROWNUM>*****多少的说法其实实现你的功能可以用minus select * from table1 where rownum<600
    minus
    select * from table2 where rownum<500
      

  14.   

    同意 xiaoxiao1984(笨猫儿^_^) 的
      

  15.   

    我就是用得select * from (select Z_YXJK_DMDH.*, rownum as rid from Z_YXJK_DMDH where rownum<=600) where rid >= 500这种方法实现的,谢谢各位了,结贴了.