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

Posted mr.杰瑞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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语句如何随机取一条数据的主要内容,如果未能解决你的问题,请参考以下文章

mysql 分组后 每组随机取一条记录 求sql语句

mysql数据库中sql语句取一段时间的每一天的最后一条数据?sql语句怎么写

sql怎么生成某一个时段内的随机时间戳

如何随机从数据库表中抽一条数据的SQL语句

sql 一对多关系随机查一条

sqlserver 查询多条数据怎么只取一条