在oracle表中怎么获得第5行到第7行的记录
2014-07-18 17:40
288 查看
在oracle中表test,
记录如下:
A
---
1
2
3
4
5
6
7
8
请问怎么获得第5行到第7行的记录呢?
/************************************答案***********************************/
select * from can_jsk where rownum <= 7 minus select * from can_jsk where rownum <= 5
/***********执行结果**************/
1* select * from emp where rownum <= 7 minus select * from emp where rownum <= 5
SQL> /
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
1* select * from emp where rownum!=10
SQL> /
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
已选择9行。
/*********错误***********/
SQL> select* from emp where rownum <=2
2 minus
3 select * from emp where rownum<=5
4 ;
未选定行
注意: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之间的。
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
在效率上推荐前一种
转载自:http://www.cnblogs.com/wenjl520/archive/2009/04/28/1445779.html
记录如下:
A
---
1
2
3
4
5
6
7
8
请问怎么获得第5行到第7行的记录呢?
/************************************答案***********************************/
select * from can_jsk where rownum <= 7 minus select * from can_jsk where rownum <= 5
/***********执行结果**************/
1* select * from emp where rownum <= 7 minus select * from emp where rownum <= 5
SQL> /
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
1* select * from emp where rownum!=10
SQL> /
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- ---------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 19-4月 -87 3000 20
7839 KING PRESIDENT 17-11月-81 5000 10
已选择9行。
/*********错误***********/
SQL> select* from emp where rownum <=2
2 minus
3 select * from emp where rownum<=5
4 ;
未选定行
注意: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之间的。
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
在效率上推荐前一种
转载自:http://www.cnblogs.com/wenjl520/archive/2009/04/28/1445779.html
相关文章推荐
- 在oracle表中怎么获得第5行到第7行的记录
- 请问在ORACLE中怎么实现获得一个库中的所有表中的全部记录数?
- 有关oracle查询出现的重复记录怎么去除的方法谈
- Oracle中如何获得日期类型字段最新(时间最晚)的记录
- ORACLE 8i 的存储过程里面 select aaa into var1 from tablea 如果记录为空,会出错.怎么解决
- 怎么在插入oracle记录的时候同时得到自动增长的ID值(未解决)
- 怎么计算Oracle的表一条记录占用空间的大小
- 怎么计算Oracle的表一条记录占用空间的大小
- oracle如何获得新插入记录的id
- ORACLE中获得受影响记录行数
- 请教怎么查询ORACLE的历史操作记录!
- 我想获得从第三条到第八条的记录,怎么办呢?(DB2)
- 【oracle】 一千条记录查200到300的记录怎么查
- 向oracle插入记录的同时获得插入的自增主键值
- 今天看了一篇oracle tip,关于如何获得行锁时跳过已被锁的行,oracle8i的sql reference居然没有关于这个选项的介绍,特此记录下来。
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- 在oracle一个有60万记录的表中删除几十条记录怎么用了很长时间?
- ASP中怎么获得被更新或新增的记录数?
- 怎么计算Oracle的表一条记录占用空间的大小
- 点了dataGrid一列头后,记录产生了排序,顺序变后,新的记录怎么访问?