之前业务里面有一个要求,有一个表存放待解答的问题表,需求是需要随机的展示一个题目到前台页面。

数据库是使用的MySQL,那么怎么才能随机查询到一条数据呢?

以下提供三种方式:

方式一:select * from t order by rand() limit 1;

方式二:select max(id) as maxId, min(id) as minId from t ; 首先查询出来最大和最小的id,然后再根据这个最大和最小的id,随机生成一个在最大和最小id之间的整数c。然后再根据这个随机c查询数据库:select * from t where id>= c limit 1;

方式三:select count(*) from t; 首先查询出满足条件的总条数total,然后再根据这个total值生成一个1到total之间的随机数c,根据这个随机数再查询数据库:select * from t  limit c,1;

如果表的数据量很小,我觉得可以选择第一种,虽然第一种查询在查询数据库时扫描行数相比其它两种,扫描行数最多,但是如果数据量很小的话,这种只需要连接一次数据库,相比另外两种可能还快一些。

方式二扫描行数和方式三相比,方式二的扫描行数要少一些,但是如果满足结果的id分布不均匀,那么可能随机效果不怎么好,比如id的分布是:1,2,3,30000,....,40000,30000到40000之间是连续的,用方式二查询出来的最大值和最小值是40000,1,那么生成的随机数很可能在3和30000之间,那么查询返回的数据很大可能就是大概率返回id为30000这条,没有达到随机的效果。此时需要选择第三种方案,因为第三种方案返回的是满足条件的数据中,随机的第N条。

MySql随机查询一条数据相关推荐

  1. mysql随机查询多条记录表_MySQL 随机查询表中N条记录

    mysql 随机查询N条记录 method 1 : SELECT * FROM tablename ORDER BY RAND() LIMIT N; method 2 : SELECT * FROM ...

  2. 用mysql随机查询表a10条数据_ES简介

    一.简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口操作ES,也可以利用Java API.Elastics ...

  3. mysql pdo 查询一条数据_pdo mysql怎么输出第1条 第4条 第7条数据

    pdo mysql怎么输出第1条 第4条 第7条数据.. 下面是输出全部数据.. query($sql1); while($row = $rs -> fetch()) { echo' '.$ro ...

  4. Oracle数据库:随机查询100条数据

    方法一: SELECT m.*FROM (SELECT u.* FROM USER_INFO u order by dbms_random.value()) mwhere rownum < 10 ...

  5. mysql pdo 查询一条数据,使用 PDO 关联查询 MySQL 数据

    使用pdo关联查询mysql数据 try { $pdo = new PDO('mysql:host=localhost;dbname=test;', 'root', '123456'); // 0.等 ...

  6. mysql随机取5条数据_【转】mysql实现随机获取几条数据的方法

    sql语句有几种写法 1:SELECT * FROM tablename ORDER BY RAND() LIMIT 想要获取的数据条数: 2:SELECT *FROM `table` WHERE i ...

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

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

  8. 如何从Mysql快速查找一条数据

    前言 可能许多小伙伴在面试中会遇到这么样的一道面试题:如何以最高效率随机在 Mysql 数据表中查找一条数据 实际上,这个题包含了两个点 在 Mysql 数据表随机查找一条数据 保证效率最高 实战 我 ...

  9. mysql随机查询 uuid_mysql实现随机查询经验谈

    一.随机查询一条数据 方法一:SELECT * FROM `table` ORDER BY RAND() limit 1 评价:不建议使用,效率非常低,官方文档中进行说明:Order By和RAND( ...

最新文章

  1. 学习新对象字面量语法
  2. 为什么说红外热成像测温设备是2020年最火的弱电设备?
  3. 喝酒撸串聊技术!来看云栖大会15位大咖真人秀
  4. finder怎么才能找到library
  5. 【IT】一些有用的链接和操作
  6. unity player 显示播放错误时的解决办法
  7. php图书管理系统外文文献,JSP图书管理系统论文+源码+英文文献翻译+参考文献 第10页...
  8. 6月中国最美的地方!对的时间就要去对的地方!
  9. 如何用Appium连接并操作手机App
  10. 制作多关卡系统 func_brush
  11. EDK2开发中error C2220: 警告被视为错误 - 没有生成“object”文件的解决方法!
  12. 大脑神经网络具有什么性,神经网络跟大脑的关系
  13. left join 和 left outer join (可解决多个表left join的问题)
  14. Win11右键菜单改回Win10
  15. 重塑矩阵(一个矩阵转化成另一个矩阵)
  16. 专转本就业歧视怎么消除_人工智能可以帮助消除歧视
  17. 显卡驱动的作用(本质作用)
  18. CreateProcess error=206, 文件名或扩展名太长
  19. STC单片机在线ISP IAP OTA
  20. 解决SSH连接到服务器后因闲置时间导致的断开连接

热门文章

  1. 做人工智能薪资怎么样?AI从业收入高吗?
  2. 第六季完美童模全球总决赛 全球十佳小超模 重磅公布
  3. excel数量汇总工具
  4. 利用badusb对用户进行木马远控
  5. 海康综合安防平台使用内置H5播放器查看监控录像
  6. AJAX(GET POST请求、 jQuery axios 发送请求、跨域--cors、请求超时、网络异常、放弃请求、重复发送请求)
  7. “北航学堂”M2阶段postmortem
  8. 【小技巧】Google chrome首页被桔梗网恶意劫持的解决方法
  9. Centos 7安装搜狗输入法
  10. pkusc2021游记