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

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}

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


最后

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

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


  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈永佳

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值