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用法相关推荐

  1. Oracle数据库之rownum,ORACLE数据库中Rownum用法详解

    ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(,& gt;=,=, ...

  2. 【软件测试】Oracle中的rownum用法

    一.对rownum的说明 查看全文 http://www.taodudu.cc/news/show-3538609.html 相关文章: Oracle rownum 用法 Oracle rownum ...

  3. rono在oracle的作用_oracle中rownum作用及用法

    对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀 ...

  4. oracle中的rownum用法

    对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀 ...

  5. oracle rownum_,oracle中rownum和row_number()

    row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内 ...

  6. Oracle中的rownum和rowid

    --注意:rownum和rowid只有Oracle有,其它数据库是不支持的 select * from scott.dept; --查询的结果称为'结果集' --rownum 伪列 '结果集'中产生的 ...

  7. PostgreSQL Oracle 兼容性之 - rownum

    摘要: 标签 PostgreSQL , rownum , Oracle 兼容性 , row_number 窗口 , limit , PPAS , EDB 背景 Oracle ROWNUM是一个虚拟列, ...

  8. oracle+rownum(),Oracle rownum和row_number()

    rownum 和 row_number()的区别 一. Oracle中的rownum 用于从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依次类推.这个伪字段可以用于限制查询返回的总行数,而 ...

  9. 转:Oracle中的rownum不能使用大于的问题

    标题:Oracle中的rownum不能使用大于>的问题 转自网络,稍做修改: 一.对rownum的说明 关于Oracle 的 rownum 问题,很多资料都说不支持SQL语句中的"&g ...

最新文章

  1. win10 远程ubuntu
  2. Redis - RedisTemplate及4种序列化方式深入解读
  3. Android设计模式之——迭代器模式
  4. seo日常工作表_seo工作者的日常和苦与甜
  5. 2019 ACOUG China Tour-北京站3.23与您相约!
  6. android tools add native support,使用NDK进行开发android
  7. ue设置MySQL_MySQL的安装与配置——详细教程 - Winton-Q
  8. Git(2)-- Git安装后首次配置与第一次使用Git和Github管理自己的代码(超详细纯小白图文教程)
  9. Flutter实战:手把手教你写Flutter Plugin
  10. 单元测试框架TestableMock快速入门(四):Mock的生效范围
  11. 【工作笔记001】SuperMap配准TransCAD底图
  12. Java实习日记(7)
  13. 如何把python代码翻译成中文-Python:谷歌翻译20次的程序如何实现?
  14. 一篇文章搞懂高级程序员、架构师、技术总监、CTO从薪资到技能的区别
  15. Android中的占位符
  16. Xcode (xip)官方原版下载 Xcode 所有历史版本(转载)
  17. 解决:cannot import name ‘xxx‘ from ‘xxx‘
  18. 老年性痴呆,需要心理关爱
  19. 十二个“一”与耍猴(互动媒体技术作业)
  20. 主流车企在元宇宙的动向和布局

热门文章

  1. Java设计模式 观察者模式 花呗生活号
  2. nmon命令linux安装,手把手教你安装nmon
  3. Mac 安装Powerline
  4. Java中DOM4J解析xml文件浅析
  5. flutter 调用摄像头,前后镜头切换
  6. 插入优盘有提示音,但不显示
  7. [数据结构]题海啊,全是水(一)移除链表元素、反转链表、链表的中间节点
  8. 用JS获取URL的方法(超级简单)
  9. python之kepserver连接测试
  10. IntelliJ IDEA中debug使用教程