MySQL数据库从表中随机获取一条或者多条记录_优睿远行的博客-程序员信息网_mysql随机查询一条数据

技术标签: 微信小程序  PHP网站  php  小程序  

在很多应用场景下,我们需要从数据库表中随机获取一条或者多条记录。这里主要介绍对比两个方法。

1:获取一条记录,最简单的方法,但经过测试认证,效率也是最低,查询时间是最长。

SELECT * FROM table_name ORDER BY RAND() LIMIT 1;

使用中RAND()函数调用可以在0和1之间产生一个随机数。

如果你想要查询多个记录可以将LIMIT 1 改为 LIMIT n , n代表你要返回的数据量。官方手册讲解:在MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描。

2:此方法经过测试速度非常快,在数万个记录中随机获取数据并且加上条件筛选也能在0.02s左右的时间返回,可以说速度是非常快,效率非常高的。

SELECT t1.id,t1.word,t1.status FROM hy_idiom AS t1 JOIN 
(SELECT ROUND(RAND() * ((SELECT MAX(id) FROM hy_idiom 
where status=1)-(SELECT MIN(id) FROM hy_idiom 
where status=1))+(SELECT MIN(id) FROM hy_idiom  
where status=1 )) AS id) AS t2 WHERE t1.id >= t2.id AND t1.status=1 
ORDER BY t1.id LIMIT 5 ;

LIMIT 5 表示取出5条记录,可根据需要对SQL语句进行修改即可使用。

具体案例。我开发了一款成语闯关小程序,不同的阶段读取对应阶段的成语给用户进行闯关。假设我现在分成3个阶段。小学、初中、大神。小学阶段读取一个成语进行挑战,初中阶段读取2个成语进行挑战,大神阶段读取3个成语进行挑战。那么这个时候就涉及按阶段随机读取的问题。

看看案例演示你就明白了:

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39487835/article/details/123787952

智能推荐

用python输出世界你好_Hello World! (你好,世界!)_weixin_39670441的博客-程序员信息网

Hello World! (你好,世界!)"Hello, World",这是每一种计算机编程语言中最基本、最简单的程序,也是我们开始写的第一个程序,用来确定该语言的编译器、程序开发环境,以及运行环境是否已经安装妥当。"Hello World!"程序,作为第一个编写的程序,现在已经成为一种珍贵的传统!"Hello World"——"你好,世界",为我们打开了新的世界的大门,在计算机的世界里,有着无数...

JVM中运行时数据区域(内存结构)_reachwang的博客-程序员信息网

Java虚拟机所管理的内存通常包括以下几个运行时数据区域,如图所示:1.程序计数器程序计数器是一块较小的内存空间,可看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选择下一条需要执行的字节码指令。分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。...

hive超时问题_YrzDemo的博客-程序员信息网_hive连接超时

租户反馈他们执行一个耗时比较久的sql后,再去关闭会话连接的时候,报错连接超时了反馈添加参数运行:sethive.server2.session.check.interval=0;

nginx配置多个静态html页面_姽式、的博客-程序员信息网_nginx配置多个静态html页面

// 第一个项目server { listen 80; server_name localhost; location / { root C:\Users\Administrator\Documents\HBuilderProjects\billing; // 根目录 index index.html; try_files $uri $uri/ /index.html; } location /api/ { proxy_set_h

华为交换机硬件信息查看命令_weixin_34111819的博客-程序员信息网

查看主控板、业务板信息display version[HUAWEI]dis verHuawei Versatile Routing Platform SoftwareVRP (R) software, Version 5.130 (S7700 V200R003C00SPC500)Copyright (C) 2000-2013 HUAWEI TECH CO., LTDQuidw...

winXP+IIS+PHP+MYSQL配置指南_南三方的博客-程序员信息网

系统介绍:winXP+II5.1服务器组件:PHP5.1.2,MYSQL5.0PHP下载地址www.php.netMYSQL下载地址www.mysl.net首先安装IIS:在控制面板->添加删除windows组件,把IIS信息服务组件打上勾就行可能的问题:XPsp2中自带的防火墙可能阻止其他计算机访问你的web页,这时在防火墙设置里添加80端口为例外就行了。其次安装PHP:在官方网站上下载

随便推点

[SPI]如何确定和设定spi传输的时序_chengnian7642的博客-程序员信息网

[DESCRIPTION] 如何设定spi传输时序 [PLATFORM] MT6575 MT6577 MT6589 [SOLUTION] 如下图,spi传输中有5个时间需要设定,可以根据slave的时序要求进行设定。设定方式如下: spi_par就是从设备spi_device。对...

python判断输入类型怎么做_python判断字符类型怎么做_圣光的事不能叫偷的博客-程序员信息网

设str为字符串str.isalnum() 所有字符都是数字或字母(推荐学习:Python视频教程)str.isalpha() 所有字符都是字母str.isdigit() 所有字符都是数字str.islower() 所有字符都是小写str.isupper() 所有字符都是大写str.istitle() 所有单词都是首字母大写str.isspace() 所有字符都是空白字符或\t或\n或\r例:""...

Shell编程2_运算符_swadian2008的博客-程序员信息网

Shell运算符一、算数运算符算术运算符顾名思义,其就是进行加减乘除数值运算,在 shell 中,bash 不支持原生的数学运算,需要利用第三方工具来如let,expr等来实现。1.expr和let利用let对数值进行运算,let C=$A+$B,let运算后需要将其赋值给一个变量。[[email protected] ~]# A=1[[email protected] ~]# B=2[[email protected] ~]# let C=${A}+${B}[[email protected] ~]# ech...

Qt中更改文本的行间距_糯诺诺米团的博客-程序员信息网_qt设置行间距

前提这段时间工作告一段落,想要优化下一些不完美的功能,比如文本行间距这个功能。例如:QLabel控件展示文本时,当文本内容过多时,自动换行后的文本行间距真的是太紧密了,在美观上会有一点点瑕疵。所以,为了优化这个功能,进而实现这种可以设置行间距的功能。开发环境:VS2017+Qt5.14.2文字的字体越大,行间距越小,在这里我设置了三种字体大小,对不同的字体分别设置行间距。接下来,具体的实现这种功能吧~功能实现小字体:22;中字体:36;大字体50因为需要展示较长文本.

Tensorflow学习过程问题整理(TensorFlow版本:1.13.1,Python版本:3.6)_鬼马行天的博客-程序员信息网

1.代码错误整理(1)Spyder中Python代码运行出错错误信息:Check failed: PyBfloat16_Type.tp_base != nullptr,原因:numpy版本问题解决方法:python -m pip install --upgrade numpy(2)使用keras下载fashion_mnist出错错误原因:无法连接外网,下载不了解决办法:下载数据集到C...

计算机末端网络,计算机线缆末端的圆球是什么?_桂格的博客-程序员信息网

计算机线缆末端的圆球是什么?在常见的家庭或办公室计算机系统中,通常可以在鼠标、键盘和监视器线缆上看到这些“圆球”。你还可以在使用外部变压器的设备(例如打印机或扫描仪)的电源线上看到这些圆球。这些“圆球”称为铁氧体磁珠,有时也称为铁氧体扼流圈。它们的目的是减少EMI(电磁干扰)和RFI(射频干扰)。你可以在下图中看到这些磁珠:铁氧体磁珠只是用铁氧体制造的空心珠子或圆柱体,而铁氧体是氧化铁(铁锈)与其...

推荐文章

热门文章

相关标签