我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql-->随机取数

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql-->随机取数

该笔记记录缘由:客户要求分析21年3月每天用户消费的高峰时间点,每天随机取50条数据进行分析,总结出3种随机取数的方法,详情如下

方法一

1)使用rand()随机取数,适用于数据量少的情况,若查询表数量大会非常耗时(测试效果建下图一)

-- 写法一SELECT *from `结账单` ORDER BY RAND() LIMIT 50;-- 写法二(增加一列自增id列,随机取数的效果看起来更直观)SELECT *from (SELECT (@i:=@i+1) id,a1.*from `结账单` a1,(SELECT @i:=0) as i) qORDER BY RAND() LIMIT 50;

图一(数据量多少的耗时对比):

   

图二(方式一查询时间):

方法二(适用于数据多的情况)

思路:
1)新增某个随机数字段,取大于等于这个随机数的连续取数50条 
2)使用round() * rand() 构建一个随机数

-- round(x,d):四舍五入函数;x指要处理的数,d是指保留几位小数
-- round(x),等于round(x,0),该写法默认d为0
-- RAND():函数用于返回范围0 <= V <1.0的随机浮点值V 

图三(方式二查询时间):

SELECT * FROM `结账单` AS a1JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `结账单` )) AS id ) AS a2 WHERE a1.id >= a2.id ORDER BY a1.id ASC LIMIT 50; 

方法三

思路:
1)利用id字段随机构建数值,取大于等于这个随机数的连续取数50条 
2)使用FLOOR(MAX(id)) * RAND()构建一个随机数

-- FLOOR(x):向下取整,返回小于 x 的最大整数值;例如FLOOR(3.5)取整为3
-- MAX(x):返回指定列最大值;例如:id列(1,5,10)返回10
-- RAND():用于返回范围0 <= V <1.0的随机浮点值V 

SELECT *FROM `结账单`WHERE id >= (SELECT FLOOR(MAX(id)) * RAND() FROM `结账单`)ORDER BY id LIMIT 50;-- FLOOR(x):向下取整,返回小于 x 的最大整数值;例如FLOOR(3.5)取整为3-- MAX(x):返回指定列最大值;例如:id列(1,5,10)返回10-- RAND():用于返回范围0 <= V <1.0的随机浮点值V 

 图四(方式三查询时间):

来源地址:https://blog.csdn.net/weixin_73361196/article/details/129549060

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql-->随机取数

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql随机抽取数据

-- 慢SELECT * FROM table_name ORDER BY rand() LIMIT 5;-- 较慢SELECT * FROM `table`WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id
mysql随机抽取数据
2020-09-09

mysql如何随机获取几条数据

mysql如何随机获取几条数据,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。mysql随机获取几条数据的方法:1、通过“SELECT * FROM tablen
2023-06-22

php mysql怎么随机获取几条数据

php mysql随机获取几条数据的方法:1、通过“SELECT * FROM tablename ORDER BY RAND() LIMIT”获取数据;2、通过“ORDER BY t1.id ASC LIMIT”方式获取指定条数的数据等。
2019-07-29

Oracle实现某表随机抽取数据(随机性抽取)

目录oracle实现某表随机抽取数据1. 使用随机数2. 使用sample函数3. 结合上述两种方式(随机数编程网+sample函数)Orapythoncle数据库:随机查询100条数据方法一方法二总结Oracle实现某表随机抽取数据目前
Oracle实现某表随机抽取数据(随机性抽取)
2024-08-13

PHP怎样获取随机数

这篇文章给大家分享的是有关PHP怎样获取随机数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。作用:取得随机字符串PHP获取随机数的参数: 1、(int)$length = 32 #随机字符长度 2、(int)$m
2023-06-17

MySQL中的随机抽取的实现

目录1. 引言2. 内存临时表3. 磁盘临时表4. 优先队列排序算法1. 引言现在有一个需求是从一个单词表中每次随机选取三个单词。这个表的建表语句和如下所示:mysql> Create table 'words'('id' int(1
2023-03-20

Linq如何随机读取数据

这篇文章主要介绍了Linq如何随机读取数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linq随机读取数据在系统自由生成的o/p mapping代码中添加这个方法,如果是用
2023-06-17

JAVA中如何获取随机数

JAVA中如何获取随机数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在Java中我们可以使用java.util.Random类来产生一个随机数发生器。它有两种形式的构造函数,
2023-06-03

MySQL中的随机抽取如何实现

今天小编给大家分享一下MySQL中的随机抽取如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 引言现在有一个需求是
2023-07-05

在 PHP 中获取随机数组项

本篇文章介绍在 PHP 中从数组中获取随机项的方法。在 PHP 中使用 array_rand() 函数获取随机数组项我们可以使用 array_rand() 函数从 PHP 中的数组中获取随机项。 它使用 Mersenne Twister R
在 PHP 中获取随机数组项
2024-02-27

c语言中随机数怎么取

c语言中获取随机数的方法有五种:rand()函数生成一个整数;srand()函数用种子值初始化随机数生成器;rand_r()函数避免多线程竞争条件;drand48()函数生成一个双精度浮点数;arc4random_uniform()函数生成
c语言中随机数怎么取
2024-05-23

编程热搜

目录