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. matlab四节点矩形单元的应变,四节点矩形单元有限元解读.ppt
  2. 算法竞赛入门经典 写题笔记(第五章 图论算法与模型2)
  3. 公司网站Silverlight版^_^
  4. Cisco ASA防火墙基础
  5. div与div区别小结
  6. VBA调用DOS程序两种方法
  7. 同一个html自动跳转分页,一个页面有多个分页,相互影响
  8. python不用中间变量交换值_不使用中间变量,交换int型的 a, b两个变量的值。
  9. 浅析R语言单因素方差分析中的多重比较
  10. 大数据人工智能技术全攻略(一)
  11. FF7 中的最大伤害分析
  12. spring cache annotation(二)
  13. STM32F103ZET6开发板实现跑马灯实验
  14. 牛客网verilog刷题_VL47 格雷码计数器
  15. 如何将数据从旧PC传输到新Mac
  16. SMTP-关于邮件编码的格式
  17. vue中拿到接口,并获取数据,渲染到页面
  18. 自己对通信系统中的一些参数以及概念的理解
  19. ajaxpro ajaxMethod Error:
  20. Java智慧校园系统源码 智慧校园源码 智慧学校源码 智慧校园管理系统源码 小程序+电子班牌+人脸识别系统

热门文章

  1. 有什么平价好用的移动电源?平价好用的移动电源推荐
  2. 项目经理 你为什么应聘这个职位
  3. 用ajax提交表单给数据库,如何利用ajax提交form表单到数据库
  4. @Validated、@Valid对比及详细用法
  5. echarts雷达图类目下显示值
  6. 同时查看德邦快递多个单号物流详情信息
  7. 价值1500的全新UI众人帮任务帮PHP源码/悬赏任务抖音快手头条点赞源码/带三级分销可封装小程序
  8. 微拍堂冲刺港交所上市失效:多个核心数据下滑,林志明为大股东
  9. 用你的邮箱为你看家护院
  10. spring mvc 中静态资源404、302错误