指点成金-最美分享吧

登录

sql语句如何随机取一条数据

佚名 举报

篇首语:本文由小编为大家整理,主要介绍了sql语句如何随机取一条数据相关的知识,希望对你有一定的参考价值。

rand()

最近项目中需要从所有数据中随机取一条数据 进行展示。

从网站找了找可以使用rand()函数

例子: SELECT * FROM activity_code ORDER BY rand() LIMIT 1;

执行结果用时如图

explain 结果 看到type 是 all

这个类型真的是可怕,它是全表扫描,举个例子,数据表相当于一个班,我们要找小明同学。然后程序开始一个一个找,当发现小明后,程序并没有停下来,知道把所有同学都找一遍后,我们才确认这个是小明。

对于这样的查询当然希望优化一下

参考这篇文章 https://www.jb51.net/article/52502.htm

SELECT * FROM activity_code t1 JOIN (SELECT RAND() * (SELECT MAX(id) FROM activation_code) AS nid) t2 ON t1.id > t2.nid LIMIT 1

运行结果

最好把RAND()生成随机数放在JOIN子查询中以提高效率

以上是关于sql语句如何随机取一条数据的主要内容,如果未能解决你的问题,请参考以下文章