rownum伪行号-排行榜-分页

1.rownum 是oracle数据库特有的一个特性,它针对每一个查询(包括子查询),都会生成一个rownum用于对该次查询进行编号

2.每个rownum只针对当前select 查询有效,可以使用别名进行显示

例子:select rownum,emp.* from emp; --表名指定列(* 前面一定要别名指定列,或者表名指定列)

例子:查询出工资最高的前五名

--6个字句的执行先后 :from ,where,group by ,having,select ,select

--先排序,后筛选

(错误)select rownum,emp.* from emp where rownum<=5 order by sal desc; --先筛选后排序

select * from (select * from emp order by sal desc) where rownum<=5; --要先排序,后筛选

排行榜
例子:

--查询出工资水平在前5名的员工姓名,和工资

--理解:先排序,在通过rownum查询出前5条,在查看工资是否存在在这前5条里面

--本例包含三个查询,共有三个rownum

select ename ,sal from emp

where sal in(select * from ( select sal from emp order by sal desc) where rownum<=5) and rownum<=5;

例子:

--查询出工资最低的前五名

--注意:查询排行榜时,可能遇到边界问题

select rownum,emp.* from emp where rownum<=5 order by sal;

--查询出工资最低的前五名 的姓名和工资

select ename,sal from emp

where sal in (select * from (select sal from emp order by sal asc ) where rownum <=5) and rownum <=5;

分页查询
--分页计算参数:第几页,分页大小 --计算分页

--两种分页方法:rownum 和rownumde 别名

注意:rownum 不支持 > 和 >= 判断;rownum的别名支持>和>=判断

方法一

例子:

分页查询员工姓名,工资,入职日期;每页显示5条 分别查询出第1,2,3页数据

方法一:

理解:先在子查询中查询出前N页,在二次主查询查询出第N页;需要在子查询rownum别名

--首先用子查询查询出1*5 1-5页,再用主查询查询出大于(1-1)*5 >0 1-2-3-4-5 就是第1页

--首先用子查询查询出2*5 1-10页,再用主查询查询出大于(2-1)*5 >5 6-7-8-9-10就是第2页

--首先用子查询查询出3*5 1-15页,再用主查询查询出大于(3-1)*5 >5 11-12-13-14-15就是第3页

select * from (select rownum rn,emp.* from emp where rownum <=1*5) where rn >(1-1)*5

select * from (select rownum rn,emp.* from emp where rownum <=2*5) where rn >(2-1)*5

select * from (select rownum rn,emp.* from emp where rownum <=3*5) where rn >(3-1)*5

方法二:

--先在子查询中查询出所有的数据和数据的rownum,并使用别名表示,在第二次主查询中通过别名进行分页控制

理解:--首先用子查询查询出所有数据 ,在用主查询控制分页:(3-1)*5<=rn<=3*5 第3页

--首先用子查询查询出所有数据 ,在用主查询控制分页:(2-1)*5<=rn<=2*5 第2页

--首先用子查询查询出所有数据 ,在用主查询控制分页:(1-1)*5<=rn<=1*5 第1页

select * from (select rownum rn,emp.* from emp ) where rn<=3*5 and rn>=(3-1)*5;

select * from (select rownum rn,emp.* from emp ) where rn<=2*5 and rn>=(2-1)*5;

select * from (select rownum rn,emp.* from emp) where rn<=1*5 and rn>=(1-1)*5;

方法一的效率更高

rownum伪行号-排行榜-分页的更多相关文章

  1. oracle 行号和分页

    1.行号是个伪列,rownum 永远按照默认的顺序生成 2.rownum 只能使用< <= 不能使用>  >=(原因是oracle数据库是行式数据库,像盖楼一样,没有第一层就排 ...

  2. EasyPOI校验实现返回错误信息及行号

    IExcelModel 获取错误信息 public class ExcelVerifyEntity implements IExcelModel { private String errorMsg; ...

  3. css伪类实现行号自动填充

    css伪类实现行号自动填充 大多数时候我们需要行号自动填充的时候我们可以 大多数时候是插入元素, 在元素里用js填入行号,或者用 ol > li 实现行号填充, 对于上面的方式,都不太灵活,而且 ...

  4. MySQL查询获取行号rownum

    MySQL中可以使用变量产生行号,下面是2个简单例子: 使用工具:MySQL Workbench 说明:表heyf_10中字段,empid(员工工号).deptid(部门编号).salary(薪资): ...

  5. DOJO-dojox.grid.EnhancedGrid(带刷新函数,分页工具栏,复选框,行号等功能)

    转自:http://biancheng.dnbcw.info/javascript/395865.html dojo.require("dojox.grid.EnhancedGrid&quo ...

  6. Sqlite中使用rowid来表示行号,用于分页。

    在SQLite的查询结果中显示行号,可以使用select rowid as RowNumber ,* from WSCLanguage: select rowid as RowNumber ,* fr ...

  7. SQL基础--ROWNUM伪列

    ROWNUM伪列 的概念: rownum表示的是一个数据行编号的伪列,它的内容是在用户查询数据时,为用户动态分配的一个数组(行号). 注意它是随机生成的,并不是和某一行数据绑定在一起的. 观察rown ...

  8. sql使用row_number()查询标记行号

    背景: 在分页功能中,记录需分页显示,需要row_number()函数标记行号. 数据表: 排序之前数据表显示: sql语句: select ROW_NUMBER() over(order by id ...

  9. Oracle中ROWNUM伪列和ROWID伪列的用法与区别

    做过Oracle分页的人都知道由于Oracle中没有像MySql中limit函数以及SQLServer中的top关键字等,所以只能通过伪列的方式去满足分页功能,在此,不谈分页方法,只从根本上去介绍这两 ...

随机推荐

  1. id/su/chage/cash

    id 查看用户的uid,gid及归属的用户组 chage 修改用户密码有效期限

  2. mkdir/rmdir/install/mktemp

    mkdir rmdir很有趣,如果加上p选项,如果删除空目录后,其父目录是空,则一并删除,所以如果都是空的,那么就会全家删 a用户不能修改b用户的文件,但是却可以删除 install 创建文件并赋权 ...

  3. 51Nod 1701 最后的机会

    1701 最后的机会 给定一字符串S,S非空,由小写字母组成,设v为S中元音字母的个数,c为辅音字母的个数."a", "e", "i", & ...

  4. CF1206A

    CF1206A 题意: 给你 $ a , b $ 两个数组,要求从两个数组中各选一个数,使得它们的和不存在于任何一个数组. 解法: 一道极端签到的题. 因为是要构建一个不存于两个数组的数,所以直接将两 ...

  5. Python 上下文管理器模块--contextlib

    在 Python 处理文件的时候我们使用 with 关键词来进行文件的资源关闭,但是并不是只有文件操作才能使用 with 语句.今天就让我们一起学习 Python 中的上下文管理 contextlib ...

  6. OpenResty之指令与常用API

    1. 指令 通过 Lua 编写 Nginx 脚本的基本构建块是指令.指令常用于指定 Lua 代码是几时执行的以及如何使用运行的结果.下图展示了指令执行的顺序. lua_capture_error_lo ...

  7. git clone速度太慢解决方案

    原文地址:https://blog.csdn.net/hzwwpgmwy/article/details/79043251 适用各种操作系统,本次测试于ubuntu,下载速度从二十几k提高到二百多k ...

  8. CSS — 隐藏滚动条,依旧可以滚动

    公司的系统,在PC端可以管理我们的公众号,在发布模块页面时有一个预览功能,呈现页面在手机端的样式. 做法很简单,一会就完成了,但是在预览内容过长时手机外框会有一个滚动条,影响美观,于是就想把它去掉,有 ...

  9. v-on绑定特性命名带小横杠 ‘-’与props属性中变量怎么对应

    特性命名问题: 矛盾点一:html的特性不区分大小写 矛盾点二:Vue中除了模板命名,其他命名不允许出现小横杠 ‘-’ 在js文件内,命名为驼峰式,camerCase,进入html文件,自动转换成短横 ...

  10. SQL语句中有关单引号、双引号和加号的问题

    字符串数据是用单引号包在外面的,而+号只是用来连接这些字符串的. 数据库里的字段是整型的时候不要加单引号,是字符串的时候要加,其它类型根据实际情况来,双引号就是用来拼接字符串的,单引号是sql文的固有 ...