MySQL数据库随机取数据(比如选择题随机取3个选项)

导读:本篇文章讲解 MySQL数据库随机取数据(比如选择题随机取3个选项),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

MySQL数据库随机取值(比如选择题随机取3个选项)


mysql随机取数据

语法如下:

SELECT 字段 FROM 表明 WHERE条件
order by rand() limit 3

场景

近日遇到一个场景如下:

  • 题目问答:
  • 有选择题和判断题两种,视为问题表(又分父母题型和孩子题型)
  • 当获得题目后,选择题要求随机三个选项,多了可以类推,要求最后一个选项为填空(即自己写入答案)
  • 问题来了如何获取随机的其他两个选项!

思路如下:

首先拿到我们的父母题型或者孩子题型,取出选择题的问题key,数据库sql:

问题表:
SELECT 需要的字段 FROM 表名 WHERE 题型(父母题型还是孩子题型,而不是选择题还是判断题哈哈)

选项表:questionKey为题目的的key,order by rand() limit 2为随机抽取两道题
SELECT 需要的字段 FROM cpn_piety_question_option where questionKey = 1 order by rand() limit 2

如果是mybatis的话:

SELECT 需要的字段 FROM 表名 where questionKey = #{questionKey} order by rand() limit #{number}

按照前面说的场景,整理思路如下:

  1. 将获取到的题目集合拿出(无论父母题型还是孩子题型),进行循环
  2. if判断–题型–选择 (即为1)–执行下面的–3,else–反之执行下面的–5(注意:放入选项表的查询语句)
  3. 在里面进行查询,即上面的选项表的查询语句,得到两条随机题目limit 2这里的2也可以传参,到时候随便控制随机几个选项你懂得
  4. 将第三阶段查询出来的选择题选项集合放入当前循环下的集合的list.get(i).setOption(把你的选项集合扔进去,这里自己定义);循环结束OK
  5. 当然有一个重点– order by rand() limit #{number} –需要在mybatis加一个if判断如果题型为判断不执行这个order by rand() limit #{number}

好了到此结束,类似的场景应该有,希望对有这个问题的你有所帮助。


最后

  • 更多参考精彩博文请看这里:《陈永佳的博客》

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97673.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!