oracle中使用子查询为何取到大于自然数1 rownum 浅度解析
来源:互联网 发布:软件企业认证条件 编辑:程序博客网 时间:2024/05/23 18:31
Oracle 没有提供TOP N 语句,若希望按特定条件查询前N 条记录,可以使用伪列ROWNUM。
ROWNUM 是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列(注意:先要
有结果集)。
rownum 的值是oracle 顺序分配的从查询返回的行的编号,返回的第一行分配的是1,第二
行是2,依此类推。
查询表中第n(n>1)条记录,使用rownum=n 作为条件。
SQL> SELECT rownum,id,name FROM student WHERE rownum =2;
说明:
rownum=n 查不到。
rownum 是一个总是从1 开始的伪列,是oracle 从数据文件或缓冲区中读取数据的顺序。它
取得第一条记录则rownum 值为1,第二条为2,依次类推。如果用>,>=,=,between...and 这
些条件,因为从缓冲区或数据文件中得到的第一条记录的rownum 为1,则被删除,接着取
下条,可是它的rownum 还是1,又被删除,依次类推,便没有了数据。
可以使用子查询解决:
SQL> SELECT * FROM (SELECT rownum no ,id,name FROM student) WHERE no=2;
说明:
子查询中的rownum 必须要有别名,否则还是查不出记录。因为rownum 不是某个表的列,
如果不起别名,就无法知道rownum 是子查询的列还是主查询的列。
个人觉得,使用子查询主要是使rownum像表中的真正列一样 出现在from后面。这样rownum的值不再变化,当然可以取到任何值了,如果不放在子查询里面,你想取到的rownum伪列的值是不断变化的。
- oracle中使用子查询为何取到大于自然数1 rownum 浅度解析
- ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
- ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
- ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
- ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
- ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
- ORACLE——ROWNUM解析(使用ROWNUM大于条件,无法得到任何查询结果)
- 解析oracle中rownum
- Oracle查询中rownum与Order by查询的关系(取数据的前几条)
- Oracle查询中rownum与Order by查询的关系(取数据的前几条)
- oracle中rownum详细解析
- Oracle中函数Rownum解析
- oracle中分页查询使用ROWNUM的问题
- 为什么oracle中rownum只能小于,不能大于
- 转:Oracle中的rownum不能使用大于>的问题
- Oracle中的rownum不能使用大于>的问题
- [转]Oracle中的rownum不能使用大于>的问题
- 转:Oracle中的rownum不能使用大于>的问题
- Android 2.2 API Demos -- Intents Chooser
- 系统任务
- 命令:crontab
- 16. 方向 团队 模式 流程 细节:创业之前要想明白的5件事
- for,foreach,iterator的用法和区别
- oracle中使用子查询为何取到大于自然数1 rownum 浅度解析
- SQL类型操作集合
- 模块端口
- 报错"sqlplus: error while loading shared libraries"
- android UI进阶之实现listview中checkbox的多选与记录
- 为DataSet中的多张表设置表间关系
- ORACLE的DDL语句与已是提交的关系
- linux串口资料
- ComboBox的数据源store格式详解