• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >oracle > 随机获取oracle数据库中的任意一行数据(rownum)示例介绍

随机获取oracle数据库中的任意一行数据(rownum)示例介绍

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了oracle rownum,oracle rownum用法,oracle rownum分页,oracle中rownum的用法,oracle中的rownum等相关知识,希望本文的分享对您有所帮助

最近看oracle资料的时候,了解rownum的概念,以前只知道对数据库表进行简单的增删改查;

看到了rownum的概念后,突然想到了好多业务场景应该都可以适用的,比如在进行随机发奖的时候,

我们就可以从先查一下奖品表中可以发的总奖品数,然后通过java的Random类在总奖品数内生成一个随机整数X,然后调用

select * from (select rownum no,id from Table where rownum<=X ) where no >=X

获取出该条奖品,这样获取出来的值,在一定的并发量的时候,发生拿到同一条数据的概率就比较小啦,为了支持高并发的情况,可以在考虑为奖品表增加一个乐观锁,

如果真的发生了同一条奖品被同时操作的时候,有了乐观锁,在奖品已经被发之后,另外的一个进程再来发这个奖就会抛出异常org.hibernate.StaleObjectStateException,然后我们就可以通过捕获异常,然后重新给这个用户去奖品表里面来获取奖品!

大致介绍一下rownum的使用吧!很多文章都介绍啦!

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

1. rownum 对于等于某值的查询条件

select rownum,id,name from student where rownum=1;这个是可以查出第一行数据的,但是当rownum不为1时,是无法查询出来数据的;如

select rownum,id,name from student where rownum =2;这个就无法查询出数据;

2.rownum对于大于某值的查询条件

select * from(select rownum no ,id,name from student) where no>2;查询rownum大于某值时,必须要使用子查询的方式才可以,且内部的select中的rownum必须使用别名,否则外部查询条件是无法正常定位rownum是指内部的rownum

3.rownum对于小于某值的查询条件

select rownum,id,name from student where rownum <3;查询前2行的数据,这样是可以直接查询到的,因为rownum<3时,rownum是从1开始递增的,符合rownum的生成规律

select rownum,id,name from student where rownum <=2;这样也是可以的

4.rownum和排序

select rownum ,id,name from (select * from student order by name);首先要了解rownum的概念,rownum是在数据查询出来后,系统递增的给每行数据分配一个编号;如果使用

select rownum ,id,name from student order by name;则生成的序号则是以下情况;因为order by是先查询,查询出来后在进行排序,也就是在排序前,rownum就已经有值啦!

3 200003 李三
2 200002 王二
1 200001 张一
4 200004 赵四

5.获取某行数据的方法

select * from (select rownum r,a from yourtable where rownum <= 5 order by name )where r >4;这样就可以获取到第5行数据,且是以name排序后的第5行数据

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Oracle数据库rownum和row_number的不同点
  • oracle中rownum和row_number()
  • Oracle查询语句中rownum与rowid的不同之处分析
  • 随机获取oracle数据库中的任意一行数据(rownum)示例介绍
  • Oracle中使用Rownum分页详细例子
  • oracle的rownum深入解析
  • Oracle ROWNUM用法和分页查询总结

相关文章

  • 2017-05-11oracle 合并查询 事务 sql函数小知识学习
  • 2017-05-11ORACLE 超长字符串问题的解决办法
  • 2017-05-11Oracle 12c安装方法及一些使用问题
  • 2017-05-11Oracle 日期的一些简单使用
  • 2017-05-11浅析Oracle中char和varchar2的区别
  • 2017-05-11Oracle 用户权限管理方法
  • 2017-05-11Redhat 6.2 下 oracle 11g R2的安装详解第1/2页
  • 2017-05-11Oracle 11g控制文件全部丢失从零开始重建控制文件
  • 2017-05-11ORACLE常见错误代码的分析与解决(一)
  • 2017-05-11oracle数据库常用的99条查询语句

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • oracle的归档模式 ORACLE数据库归档日志常用命令
    • 修改计算机名或IP后Oracle10g服务无法启动的解决方法
    • oracle数据库优化辅助SQL语句
    • ORACLE SQL-UPDATE、DELETE、INSERT优化和使用技巧分享
    • Oracle一个用户如何访问其它用户的表应用指南
    • oracle bbed恢复删除数据实例
    • oracle dba 应该熟悉的命令
    • 检测oracle数据库坏块的方法
    • Oracle数据创建虚拟列和复合触发器的方法
    • ORACLE8的分区管理

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有