在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
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
相关文章推荐
- 利用sql2005的新特性实现根据子表条件得到的主表键且按其排序取出对应主表记录的方法
- SQL/Oracle取出第 m 条到第 n 条记录的方法
- SQL/Oracle取出第 m 条到第 n 条记录的方法
- MS SQLSERVER和ORACLE中取出表中按照某字段排序的前N条记录
- Oracle中取余的方法,记录去重复后排序输出
- SQL/Oracle取出第 m 条到第 n 条记录的方法
- ORACLE 8i 的存储过程里面 select aaa into var1 from tablea 如果记录为空,会出错.怎么解决
- 利用sql2005的新特性实现根据子表条件得到的主表键且按其排序取出对应主子表记录的方法
- 数据量极大时用什么排序方法比较好
- Oracle 排序中常用的NULL值处理方法(转)
- 从数据表中取出第n条到第m条的记录的方法
- oracle 中几种排序方法
- 取出数据里面相同的记录
- Oracle删除重复记录oracle 删除重复记录的高效方法 && mysql 删除重复记录方法
- java 调用 bat 如果里面用了第三方命令 dos 窗口没有关闭 解决方法
- oracle运行出现问题记录+解决方法
- 在 Oracle 数据库中,通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法:
- Oracle 排序中常用的NULL值处理方法
- oracle取出每组中的第一条记录
- Oracle字段转字符串/多行记录合并/连接/聚合字符串的几种方法