您的位置:首页 > 数据库 > Oracle

在oracle里面,如果有100条记录,排序后取出 第 10 行 到 第 20 行,用什么方法比较好?

2005-02-03 15:47 507 查看
SELECT * FROM (
SELECT table .* ,row_number() over(ORDER BY field) rk FROM table )WHERE rk>=10 AND rk<=20
=============================================
ROW_NUMBER
功能描述:返回有序组中一行的偏移量,从而可用于按特定标准排序的行号。
SAMPLE:下例返回每个员工再在每个部门中按员工号排序后的顺序号

SELECT department_id, last_name, employee_id, ROW_NUMBER()
       OVER (PARTITION BY department_id ORDER BY employee_id) AS emp_id
  FROM employees
WHERE department_id < 50;

DEPARTMENT_ID LAST_NAME                 EMPLOYEE_ID     EMP_ID
------------- ------------------------- ----------- ----------
           10 Whalen                            200          1
           20 Hartstein                         201          1
           20 Fay                               202          2
           30 Raphaely                          114          1
           30 Khoo                              115          2
           30 Baida                             116          3
           30 Tobias                            117          4
           30 Himuro                            118          5
==============================
Oracle 9i 分析函数参考手册
http://www.cnoug.org/viewthread.php?tid=38387

==============================
最简单的应该是
select b.* from
(select a.*,rownum rn from tablename order by col1) b
where b.rn>=10 and b.rn<=20
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle table