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}
按照前面说的场景,整理思路如下:
- 将获取到的题目集合拿出(无论父母题型还是孩子题型),进行循环
- if判断–题型–选择 (即为1)–执行下面的–3,else–反之执行下面的–5(注意:放入选项表的查询语句)
- 在里面进行查询,即上面的选项表的查询语句,得到两条随机题目limit 2这里的2也可以传参,到时候随便控制随机几个选项你懂得
- 将第三阶段查询出来的选择题选项集合放入当前循环下的集合的list.get(i).setOption(把你的选项集合扔进去,这里自己定义);循环结束OK
- 当然有一个重点– order by rand() limit #{number} –需要在mybatis加一个if判断如果题型为判断不执行这个order by rand() limit #{number}
好了到此结束,类似的场景应该有,希望对有这个问题的你有所帮助。
最后
-
更多参考精彩博文请看这里:《陈永佳的博客》
-
喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97673.html