ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Rownum 解决排名问题,分页问题

2019-08-07 09:01:29  阅读:220  来源: 互联网

标签:insert product pageNum 分页 into 问题 Rownum rownum select


原文链接:http://www.cnblogs.com/edwardlu/p/3290381.html

Rownum用法2013-09-09

 

一、rownum

  伪列。它和数据不是一一对应的。但是又可以通过它进行排序的。或者获取某个wornum对应的数据。

  在同一个单独的查询语句中是固定的,如子查询是一个查询,父查询又是一个查询。

  如果只是一个单独的查询,非嵌套查询,rownum是根据插入的顺序编号的。从1开始。

  如果根据rownum过滤数据,rownum必须从1开始,并且中间不能有间隔,间隔后的数据不能查询出。

二、排名。

  如工资排名,产品点击量的排名,或者想拿到某个名次的产品。

  实例:某商品的销量.获取销量排名第四的产品信息

  创建数据表:

 1 drop table if exists product;
 2 create table  product(
 3            productId varchar2(20),
 4            productName varchar2(20),
 5            saleNum  number(20)    
 6 );    
 7 insert into product values("001","商品1",200);
 8 insert into product values("002","商品2",20);
 9 insert into product values("003","商品3",50);
10 insert into product values("004","商品4",200);
11 insert into product values("005","商品5",70);
12 insert into product values("006","商品6",80);

 操作:

1 select *
2   from (select rownum rn, a.*
3           from (select * from product a order by a.saleNum desc) a
4          where rownum <= 4) k where k.rn=4;

三、分页

1 select *
2   from (select rownum rn, a.* from (select * from song a) a where rownum <=2) k
3  where k.rn >=1

按照每页2条数据显示。

设置两个变量pageSize和pageNum.

pageSize=3
第一页:            第一条       最后一条
 pageNum=1           1            3     
第二页:
 pageNum=2           4            6
第三页:
 pageNum=3           7            9       

每页的第一条数据为:pageSize(pageNum-1)+1

  最后一条数据为:pageSize*pageNum

最终要求的sql语句为:

1 select *
2   from (select rownum rn, a.* from (select * from song a) a where rownum <=(pageSize*pageNum)) k
3  where k.rn >=(pageSize(pageNum-1)+1)

 

  

转载于:https://www.cnblogs.com/edwardlu/p/3290381.html

标签:insert,product,pageNum,分页,into,问题,Rownum,rownum,select
来源: https://blog.csdn.net/weixin_30535167/article/details/98720059

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有