如何从mysql数据库中随机获取任意条数据?

我在做一个随机出题的小应用,需要在mysql数据库的题库表里随机选出任意条数据作为题目,每条数据为一道题目,从网上查了很多资料,基本上有两种,一种是使用ORDERBYra... 我在做一个随机出题的小应用,需要在mysql数据库的题库表里随机选出任意条数据作为
题目,每条数据为一道题目,从网上查了很多资料,基本上有两种,一种是使用 ORDER BY rand()语句,这个语句可以实现取任意条数据,但是官网提示数据量大时内存消耗会很大,查询会很慢,另一种是SELECT
table. *
FROM
(SELECT
ROUND(RAND() * (SELECT
MAX(id)
FROM
table)) random_num,
@num:=@num + 1
FROM
(SELECT @num:=0) AS a, table
LIMIT N) AS b,
table AS t
WHERE
b.random_num = t.id;
这种语句有一个问题,就是我想选出20条数据,有时候会返回19条,就是会出现返回数据不够的情况,请问各位大神有什么好办法没?最好返回的数据可以不按自增长id排序,题目顺序需要打乱。
展开
 我来答
吃扶渺穿1z
2018-10-08 · TA获得超过1114个赞
知道小有建树答主
回答量:440
采纳率:0%
帮助的人:60万
展开全部
随机读取可用newid(),取一条可用top 1
举例:如在表test中随机抽取一条未被读取的数据,执行语句为:
select?top?1?*?from?test?order?by?newid()第一次执行结果:
第二次执行结果:
结论:两次执行结果有可能一样,也有可能不一样,也就是实现了随机的效果。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式