从表中随机返回N条记录

需求描述

需求:从雇员表emp里随机查询5条雇员的名称和工资信息。

解决方法:使用数据库里内置的限制行数函数结合随机函数来解决。

注: 数据库数据集SQL脚本详见如下链接地址

员工表结构和数据初始化SQL脚本

SQL代码

--Mysql:
SELECT ename,sal
FROM emp
order by rand() limit 5;-- Sql server:
SELECT TOP 5 ename,sal
FROM emp
ORDER BY NEWID()

注: newid是SQL Server里的内置函数,因为newid()返回的是uniqueidentifier类型的唯一值,而且每次生成的值都不一样,所以能达到随机的效果。

执行结果

-- Oracle:
SELECT * FROM
(SELECT ename,sal FROM empORDER BY Dbms_Random.value()
)
WHERE rownum <=5

注: dbms_random是一个可以生成随机数值或者字符串的程序包。这个包有initialize()、seed()、terminate()、value()、normal()、random()、string()等几个函数,但返回随机值的函数value()是最常用的。

你可以直接访问这个随机数字的函数,它返回个0到1之间的一个小数。

SELECT Dbms_Random.value() AS RAND_VALUE
FROM DUAL;

执行结果

如果想生成1-100之间的随机数,你可以这么做:

SELECT TRUNC(Dbms_Random.value()*100) AS RAND_VALUE
FROM DUAL;

执行结果

检索数据_12_从表中随机返回N条记录相关推荐

  1. 从数据库表中随机获取N条记录的SQL语句

    Oracle:        select * from (select * from tableName order by dbms_random.value) where rownum < ...

  2. 从Mysql某一表中随机读取n条数据的SQL查询语句

    若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...

  3. TODO:从数据库中随机抽取一条记录

    TODO:从数据库中随机抽取一条记录 1.最直接,最粗暴的方法先计算记录的总数,然后选择一个从0到记录总数之间的随机数n,利用skip跳过n条记录,这是效率低下的的方法,首先的记录总数,在用skip会 ...

  4. mysql获取删除的条数_如何从mysql表中删除数百万条记录而不会减速

    有没有一种很好的方法来删除很多记录而不会减慢网站的速度? 我需要从没有索引和主键的MySQL表中删除数百万条记录.我阅读了SO和网上的各种教程,基本策略是限制删除查询,在删除之间休眠一两秒钟,然后重复 ...

  5. 检索数据_2_从表中查询部分行

    从表中查询部分行 需求描述 需求:查询雇员表emp里员工号是7782的员工的详细信息. 解决方法:先找出emp表的员工号的字段名,再结合SELECT FROM WHERE来实现.其中这里通过where ...

  6. 检索数据_1_从表中查询所有行和列

    从表中查询所有行和列 需求描述 需求:检索表里所有行的数据. 解决方法:通过SQL的关键字*来匹配到所有行和列,结合SELECT FROM 即可满足需求. 注: 数据库数据集SQL脚本详见如下链接地址 ...

  7. 检索数据_13_从表中查询空值

    从表中查询空值 需求描述 需求:从雇员表emp里查询所有奖金为空的员工名称.工资信息和奖金信息. 解决方法:首先找到该段逻辑的涉及到的表名和字段名,emp表,字段ename,sal,comm,使用IS ...

  8. 检索数据_4_从表中查询部分列

    从表中查询部分列 需求描述 需求:查询雇员表emp中所有的员工编号.员工名称.职位情况. 解决方法:先找出emp表的工编号.员工名称.职位对应的字段名,再结合SELECT FROM 即可满足需求. 注 ...

  9. mysql十亿_Mysql:表中有数十亿条记录

    我需要在Mysql表中保存约78亿条记录.该表既读写又密集.我必须每小时至少保留20亿记录的插入率.而在桌子上搜索不应超过10秒钟. 我们有一个UI,用户可以根据不同的colums属性进行搜索. 大多 ...

最新文章

  1. 解决git本地提交不到远程库
  2. Android软键盘遮挡的四种解决方案
  3. 深度解析windows调试技术之一 [抓取user mode dump文件的几重境界]
  4. 在2017年从Maven工件生成P2存储库
  5. python显示当前中文日期_Python--获取当前日期和时间(含中文格式)
  6. mysql efbbbf_MySQL中修理特殊不可见uft8字符 - trim
  7. imp命令导入指定表_【imp】使用imp工具迁移数据时迂回地排除特定表的导入
  8. 【Flink】源码-Flink重启策略-简介 Task恢复策略 重启策略监听器
  9. 基于Spring Security的认证授权_应用详解_会话管理_Spring Security OAuth2.0认证授权---springcloud工作笔记129
  10. (转)android UI进阶之自定义组合控件
  11. VedioCapture
  12. 混合式教学模式在课堂中的应用
  13. 网络综合实验结课总结
  14. MySQL OCP认证(文末附参考题)
  15. java单词200个,请收藏!贼有用
  16. Convert Sublime Text 2/3 to Licensed Version
  17. c语言如何读文件,如何正确用C语言读取文件
  18. 【超图+CESIUM】【基础API使用示例】18、超图|CESIUM - 标绘点位:Cesium.DrawHandler绘制点位Cesium.DrawMode.Point
  19. 【高等数学】九种二次曲面及其方程
  20. 2021-06-05按键精灵实现远程获取消息内容

热门文章

  1. VTK:图像平移范围用法实战
  2. VTK:比较随机生成器用法实战
  3. VTK:vtkCellPicker用法实战
  4. VTK:vtkBooleanOperationPolyDataFilter用法实战
  5. wxWidgets:wxURI类用法
  6. boost::function模块右值的测试程序
  7. Boost.Flyweight 性能比较示例
  8. Boost:基于Boost的阻塞tcp echo的测试程序
  9. ITK:计算两个图像之间的均方度量值
  10. ITK:复制复合变换CompositeTransform