mysql-->随机取数

这篇具有很好参考价值的文章主要介绍了mysql-->随机取数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

1、方法一

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
) q
ORDER BY RAND() LIMIT 50;

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

mysql-->随机取数   

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

mysql-->随机取数

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

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

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

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

mysql-->随机取数

SELECT * 
FROM `结账单` AS a1
JOIN (
			SELECT ROUND(RAND() * (SELECT MAX(id) FROM `结账单` )) AS id 
			) AS a2 
WHERE a1.id >= a2.id 
ORDER BY a1.id ASC 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 
*/
	
	 

3、方法三

思路:
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 

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

mysql-->随机取数文章来源地址https://www.toymoban.com/news/detail-454948.html

到了这里,关于mysql-->随机取数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端解决客户端不安全随机数

    前端项目在安全漏洞扫描的时候,爆出了客户端不安全随机数的问题,看了下代码是因为使用了 Math.random() 生成随机数造成的。 百度了一下,math.random()并不是真的随机数,而是伪随机数! 原因 Math.random() 函数是 JavaScript 内置的一个函数,它用于生成一个 0 到 1(包括0,不包括

    2024年02月16日
    浏览(44)
  • 行走在深度学习的幻觉中:问题缘由与解决方案

    我们在使用深度学习大模型如LLM(Large Language Models)时,可能会遇到一种被称为“幻觉”的现象。没错,它并不是人脑中的错觉,而是模型对特定模式的过度依赖,这使得模型的预测结果出现偏差。那么,它为什么会出现,我们又怎样破除这种“幻觉”?下面让我们一同揭秘

    2024年02月03日
    浏览(43)
  • Kubernetes中Ingress、Ingress Controller、IngressClass的产生缘由、YAML描述及使用详解

    本文深入探讨了Kubernetes中Ingress、Ingress Controller、IngressClass的产生缘由及作用,详细介绍了它们在管理集群进出流量中的重要性。通过对Ingress和Ingress Class的YAML描述和使用方法的解释,展示了如何配置和管理这些对象以实现流量路由和负载均衡。

    2024年02月09日
    浏览(59)
  • 实现猜数字的游戏,要求随机生成1--100之间的整数,用户有五次机会猜测该数字,计算机给出猜大了或猜小了的提示,看用户能否猜对该数字。

    实现猜数字的游戏,要求随机生成1–100之间的整数,用户有五次机会猜测该数字,计算机给出猜大了或猜小了的提示,看用户能否猜对该数字。

    2024年02月15日
    浏览(43)
  • MySQL、Oracle 生成随机ID、随机数、随机字符串

    UUID():是由128位的数字组成的全局唯一标识符。每次都生成一个新的随机数。 它通常以32个十六进制数的形式表示,分为5个部分,以连字符分隔。 UUID的长度是36个字符,包括32个十六进制数字和4个连字符。 UUID的标准格式是由 8-4-4-4-12 个十六进制数字组成的,其中每个部分的

    2024年01月16日
    浏览(57)
  • 记录--js小练习(弹幕、 电梯导航、 倒计时、 随机点名、 购物放大镜)

    弹幕 电梯导航 倒计时 随机点名 购物放大镜 效果预览 功能:输入弹幕内容,按下回车显示一条弹幕(弹幕颜色、字体随机生成) 思路:设置按钮抬起事件,在事件中判断如果按下的是回车键则将输入框中替换掉敏感词的数据追加到标签中,字体的颜色、大小、位置按照生成

    2024年02月04日
    浏览(62)
  • P1123 取数游戏

    一个 N × M Ntimes M N × M 的由非负整数构成的数字矩阵,你需要在其中取出若干个数字,使得取出的任意两个数字不相邻(若一个数字在另外一个数字相邻 8 8 8 个格子中的一个即认为这两个数字相邻),求取出数字和最大是多少。 第一行有一个正整数 T T T ,表示了有 T T T 组

    2024年02月13日
    浏览(44)
  • 取数游戏(dfs)

    该题取自洛谷P1123,题主用的dfs(深度优先搜索)   思路见代码,注释的很清晰嗷  

    2024年04月12日
    浏览(35)
  • 商用密码应用与安全性评估要点笔记(密评技术测评要求)

    4.4 密码应用技术测评要求 词条 内容 层面 物理和环境安全(包含3个测评单元) 单元-1 身份鉴别(1-4级) 测评指标:采用密码技术进行物理访问身份鉴别,保证重点区域进入人员身份真实性 测评对象:信息系统所在机房等重要区域及其电子门禁系统 测评实施:算法、技术、

    2024年02月04日
    浏览(69)
  • 自学CTP客户端开发记录001

    综合交易平台(Comprehensive Transaction Platform,CTP)是专门为期货公司开发的一套期货经纪业务管理系统,由 交易 、 风险控制 和 结算 三大系统组成。 其中, 交易系统 主要负责 订单处理、行情转发及银期转账 业务, 结算系统 负责 交易管理、帐户管理、经纪人管理、资金管

    2024年02月01日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包