row_number() over (order by 字段名称) 和 order by 两种方法的差别

废话不说上数据(用ID进行排序)

以下数据是没有排序时的数据     select ROWNUM rn,  id from table 

row_number() over (order by 字段名称) 和 order by 两种方法的差别_第1张图片

以下数据是用order by 排序的数据  select ROWNUM rn,  id from table order by id

row_number() over (order by 字段名称) 和 order by 两种方法的差别_第2张图片     我们发现返回的数据有按id排序,但是序号是错的

 

以下数据是用row_number 排序的数据  select row_number() over (order by id) rn,  id from table order by id

row_number() over (order by 字段名称) 和 order by 两种方法的差别_第3张图片       我们发现返回的数据有按id排序,序号也是正确的

 

原因是:row_number 是先排序(先执行over后面的内容)后编序号

 

 

你可能感兴趣的:(数据库,排序,row_number,order,by)