oracle+rownum(),Oracle rownum用法
rownum是什么
rownum是一种伪列,它会根据返回记录生成一个序列化的数字。
对rownum进行>、>=、=操作
不能对rownum使用>(大于1的数值)、>=(大于或等于1的数值)、=(大于或等于1的数值),否则无结果
原因:rownum是伪列,必须要要有返回结果后,每条返回记录就会对应产生一个rownum数值;
返回结果记录的rownum是从1开始排序的,因此第一条始终是1;
可以改成以下方式执行:
查询rownum=2的数据:1
2
3SELECT STU_ID,STU_NAME
FROM (SELECT STU_ID,STU_NAME, ROWNUM AS RN FROM STUDENT)
WHERE RN = 2;
查询rownum > 2的数据:1
2
3
4SELECT * FROM STUDENT
MINUS
SELECT * FROM STUDENT
WHERE ROWNUM <= 2;
rownum与order by
在使用rownum时,只有当Order By的字段是主键时,查询结果才会先排序再计算rownum。
对非主键字段进行排序时就会产生混乱,产生混乱的原因是:oracle先按物理存储位置(rowid)顺序取出满足rownum条件的记录,然后在对这些数据按照Order By的字段进行排序,而不是我们所期望的先排序、再取特定记录数。
对非主键字段排序再取前n条数据,我们可以用以下方式实现:1
2
3
4SELECT STU_ID, STU_NAME
FROM (SELECT STU_ID,STU_NAME FROM STUDENT
ORDER BY STU_NAME)
WHERE ROWNUM <= 5;
rownum分页方式1:
SELECT FROM (SELECT ROWNUM R, A. FROM STUDENT A WHERE ROWNUM <= 10)
WHERE R >= 5;
方式2:
SELECT FROM (SELECT ROWNUM R, A. FROM STUDENT A)
WHERE R BETWEEN 5 AND 10;
方式3:
SELECT FROM STUDENT WHERE ROWNUM <= 10 MINUS
SELECT FROM STUDENT WHERE ROWNUM < 5;
Mysql使用rownum
MySQL 下面没有rownum,以下是在网上查到的曲线自救方法:1
2
3
4SELECT @rownum := @rownum+1 AS rownum,
table1.*
FROM (SELECT @rownum:=0) r ,
table1;
在我项目中用到的rownum语句:Oracle:1
2
3
4
5
6
7
8SELECT TT.* FROM( SELECT ROWNUM AS RN,TA.* FROM(
SELECT *
FROM TB_PROPERTY WHERE 1=1
AND property_key like concat(CONCAT('%',#{key}), '%')
AND property_value like concat(CONCAT('%',#{value}), '%')
)TA
where ROWNUM <= #{pagination.endNum}
)TT where -1 != #{pagination.startNum} ORDER BY ID DESC, PROPERTY_INDEX
Mysql:1
2
3
4
5
6
7SELECT * FROM( SELECT @rownum:=@rownum+1 RN,TA.* FROM(
SELECT *
FROM TB_ESHOP_SYSTEMCONFIGS WHERE 1=1
AND property_key like concat('%',#{key}, '%')
AND property_value like concat('%',#{value}, '%')
ORDER BY ID DESC, PROPERTY_INDEX )TA
)TT where -1 != #{pagination.startNum} limit #{pagination.startNum},#{pagination.pageSize}
参考资料
oracle+rownum(),Oracle rownum用法相关推荐
- Oracle数据库之rownum,ORACLE数据库中Rownum用法详解
ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(,& gt;=,=, ...
- 【软件测试】Oracle中的rownum用法
一.对rownum的说明 查看全文 http://www.taodudu.cc/news/show-3538609.html 相关文章: Oracle rownum 用法 Oracle rownum ...
- rono在oracle的作用_oracle中rownum作用及用法
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀 ...
- oracle中的rownum用法
对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀 ...
- oracle rownum_,oracle中rownum和row_number()
row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内 ...
- Oracle中的rownum和rowid
--注意:rownum和rowid只有Oracle有,其它数据库是不支持的 select * from scott.dept; --查询的结果称为'结果集' --rownum 伪列 '结果集'中产生的 ...
- PostgreSQL Oracle 兼容性之 - rownum
摘要: 标签 PostgreSQL , rownum , Oracle 兼容性 , row_number 窗口 , limit , PPAS , EDB 背景 Oracle ROWNUM是一个虚拟列, ...
- oracle+rownum(),Oracle rownum和row_number()
rownum 和 row_number()的区别 一. Oracle中的rownum 用于从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依次类推.这个伪字段可以用于限制查询返回的总行数,而 ...
- 转:Oracle中的rownum不能使用大于的问题
标题:Oracle中的rownum不能使用大于>的问题 转自网络,稍做修改: 一.对rownum的说明 关于Oracle 的 rownum 问题,很多资料都说不支持SQL语句中的"&g ...
最新文章
- matlab四节点矩形单元的应变,四节点矩形单元有限元解读.ppt
- 算法竞赛入门经典 写题笔记(第五章 图论算法与模型2)
- 公司网站Silverlight版^_^
- Cisco ASA防火墙基础
- div与div区别小结
- VBA调用DOS程序两种方法
- 同一个html自动跳转分页,一个页面有多个分页,相互影响
- python不用中间变量交换值_不使用中间变量,交换int型的 a, b两个变量的值。
- 浅析R语言单因素方差分析中的多重比较
- 大数据人工智能技术全攻略(一)
- FF7 中的最大伤害分析
- spring cache annotation(二)
- STM32F103ZET6开发板实现跑马灯实验
- 牛客网verilog刷题_VL47 格雷码计数器
- 如何将数据从旧PC传输到新Mac
- SMTP-关于邮件编码的格式
- vue中拿到接口,并获取数据,渲染到页面
- 自己对通信系统中的一些参数以及概念的理解
- ajaxpro ajaxMethod Error:
- Java智慧校园系统源码 智慧校园源码 智慧学校源码 智慧校园管理系统源码 小程序+电子班牌+人脸识别系统