【oracle】rownum的快速了解
oracle数据库有一个特有的字段或者属性rownum,常用在分页查询。下面就来学习一下它吧。 【是什么】 rownum是oracle数据库从数据文件或缓冲区中读取数据的顺序,是对结果集加的一个伪例,是oracle特有的隐藏的字段,记录的是行数。 例如:数据库t_user表中有两条数据,如下:
Select * from t_user,得到的结果集,实际上,如下图,只不过rownum是隐藏属性。
【相关用法】 假设t_user表中有以下数据(以下排序都以此表为例) 1.rownum的排序 rownum是在取数据的时候产生的序号,但是具体是怎么对数据进行排序的就需要注意一下了。如下图: 如上图所示,结果集并没有按照user_Id进行排序,反而是按照数据插入数据的真正实践进行的排序。为了解决这个问题,我们可以用子查询,如下:
这样数据就乖乖的按照我们order by的user_Id排序了。 2.rownum的查询 对于直接查询时,对rownum的=、<、>进行取值 ①直接查询rownum=1,正确;rownum<n,也正确。
②直接查询rownum=2,不正确,这是因为rownum都是从1开始的,但是1以上的自然数在rownum做等于判断时都认为是false条件,所以查询不出数据。如下图:
③使用子查询就没那么麻烦了,但是有一点,就要要对rownum进行命名,不然rownum到底是属于内层的呢?还是外层的呢?会导致歧义,如下对比图:
【测试】 理解一下下面这段代码最后的查询结果吧: SELECT user_id,user_name,PASSWORD,contact_tel,email,create_date FROM ( SELECT rownum rn,user_id,create_date FROM ( SELECT user_id,create_date FROM t_user WHERE user_id <> 'root' ORDER BY user_id ) WHERE rownum <= 6 ) WHERE rn > 1 结果如下:(先取再排序再取)
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |