【oracle】rownum的快速了解

         oracle数据库有一个特有的字段或者属性rownum,常用在分页查询。下面就来学习一下它吧。

【是什么】

         rownumoracle数据库从数据文件或缓冲区中读取数据的顺序,是对结果集加的一个伪例,是oracle特有的隐藏的字段,记录的是行数。

例如:数据库t_user表中有两条数据,如下:


          Select * from t_user,得到的结果集,实际上,如下图,只不过rownum是隐藏属性。


【相关用法】

    假设t_user表中有以下数据(以下排序都以此表为例)

1.rownum的排序

         rownum是在取数据的时候产生的序号,但是具体是怎么对数据进行排序的就需要注意一下了。如下图:

   如上图所示,结果集并没有按照user_Id进行排序,反而是按照数据插入数据的真正实践进行的排序。为了解决这个问题,我们可以用子查询,如下:


   这样数据就乖乖的按照我们order byuser_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,
			user_name,
			PASSWORD,
			contact_tel,
			email,
			create_date
		FROM
			(
				SELECT
					user_id,
					user_name,
					PASSWORD,
					contact_tel,
					email,
					create_date
				FROM
					t_user
				WHERE
					user_id <> 'root'
				ORDER BY
					user_id
			)
		WHERE
			rownum <= 6
	)
WHERE
	rn > 1


结果如下:(先取再排序再取)


计算机生成了可选文字:昌L-SERID卜。。。qqqqWerwetWrXWrX},,LSERe此N乃IE铂舀业,感,CCCCqqqq王荣晓WrXWrX竹WW研节PASSWORDCCCCCCqqqqqqsdsdsd1234565W从WWWW卿ACT一叫必选~'111111~'1234567一”'34242CREATEDATE2016,'9,/13152016/9/12212016/9/917:2016/9/12192016/9/917:阶。·票5}W书,,




评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值