select * from Z_YXJK_DMDH where (rownum>=500) and (rownum<=600)
这是一个例子:
我的意思是:如果数据表中有许多记录(如1000 条) 我现在只想查询其中第500-600之间的100记录,请问以上这样的写法有问题吗?我怎么查询不出来结果?
请各位解答一下.
这是一个例子:
我的意思是:如果数据表中有许多记录(如1000 条) 我现在只想查询其中第500-600之间的100记录,请问以上这样的写法有问题吗?我怎么查询不出来结果?
请各位解答一下.
(select rownum row_id from Z_YXJK_DMDH order by 字段)
where (row_id>=500) and (row_id<=600)
试一试
where t.rn>=500 and t.rn<=600
我在通过java连接Oracle时也尝试这样查询
结果也是无法查询
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.
用
select first_name from employees where rownum<=20
minus
select first_name from employees where rownum<=10;
方法可以的
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之间的。
----------- -------------------- ------------------------- ---------------------
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;
你去试一下,看可不可以.
select * from(select *,rownum as num from Z_YXJK_DMDH where rownum<=600)where num>=500
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
在效率上推荐前一种
minus
select * from table2 where rownum<500