MySQL实现随机获取几条零基础学大数据现实吗的方法

Java编程入门官方教程(第7版)
阅读: 2039下载: 24
UNIX入门经典
阅读: 1356下载: 20
CISSP认证考试指南(第7版)
阅读: 2278下载: 20
c语言实用之道
阅读: 1670下载: 18
沈金堤@滴滴出行
阅读: 879下载: 9
阅读: 20770下载: 3412
阅读: 13428下载: 2685
阅读: 20851下载: 2512
阅读: 11900下载: 2339
阅读: 16128下载: 2170
从Mysql某一表中随机读取n条数据的SQL查询语句
文件大小:107.43KBMB所需财富值:50
您当前剩余财富值:
从Mysql某一表中随机读取n条数据的SQL查询语句
文件大小:107.43KBMB所需财富值:40
您当前剩余财富值:
网站帮助:
盛拓传媒: |mysql实现随机获取几条数据的方法 光环大数据培训_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
mysql实现随机获取几条数据的方法 光环大数据培训
专注高端IT培训,课程涉及大数据开发、大数...|
总评分0.0|
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢励勤致远,踏实前进
从mysql中随机读取多条记录
今日工作中需要一些随机数,当APP请求接口时,从数据库中随机读取多条数据给APP,经网上查询实践,大致以下三种查询:
1.随机读取连续多条记录。经过实践,可以随机读取多条连续的数据记录,里头取值的一般都是主键ID来进行最大值、最小值的读取:
SELECT * FROM b_user_send_rose_log
JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM b_user_send_rose_log)-(SELECT MIN(id) FROM b_user_send_rose_log))+(SELECT MIN(id) FROM b_user_send_rose_log)) AS id) AS t2 WHERE t1.id &= t2.id ORDER BY t1.id LIMIT 5;
2.随机多条数据。以下两种都是随机读取数据,查询数据速度、随机范围都基本相差不大
SELECT * FROM b_user_send_rose_log WHERE id &= ((SELECT MAX(id) FROM b_user_send_rose_log)-(SELECT MIN(id) FROM b_user_send_rose_log)) * RAND() + (SELECT MIN(id) FROM b_user_send_rose_log) LIMIT 5;
SELECT * FROM b_user_send_rose_log WHERE id&=(SELECT floor(RAND() * ((SELECT MAX(id) FROM b_user_send_rose_log)-(SELECT MIN(id) FROM b_user_send_rose_log)) + (SELECT MIN(id) FROM b_user_send_rose_log))) ORDER BY id LIMIT 5;
没有更多推荐了,mysql如何随机抽取数据库里的几条数据
作者:用户
本文讲的是mysql如何随机抽取数据库里的几条数据,
数据库连接这些就不贴代码了,直接粘贴sql语句:
SELECT `title` , `id`
ORDER BY RAND( )
LIMIT 0 , 5;
数据库连接这些就不贴代码了,直接粘贴语句:
SELECT `title` , `id`
ORDER BY RAND( )
LIMIT 0 , 5;
随机从new表里取出5条数据,显示id和标题。
& select username from cdb_members order by rand() limit 0,5;
+-----------+
| username
+-----------+
| 狗狗请罪
| weike1130 |
+-----------+
5 rows in set (0.01 sec)
SELECT * FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2 WHERE t1.id &= t2.id ORDER BY t1.id LIMIT 1;
SELECT * FROM `table`
WHERE id &= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`)))
ORDER BY id LIMIT 1;
?最后在php中对这两个语句进行分别查询10次,
后者花费时间 0.147433 秒
前者花费时间 0.015130 秒
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
数据库随机抽取数据、数据库随机抽取函数、mysql随机抽取数据、mysql 随机抽取、mysql数据库随机查询,以便于您获取更多的相关知识。
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
40+云计算产品,6个月免费体验
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
云服务器9.9元/月,大学必备
云栖社区(yq.aliyun.com)为您免费提供相关信息,包括
,所有相关内容均不代表云栖社区的意见!mysql实现随机查询
实现随机查询
一、随机查询一条数据
SELECT * FROM `table` ORDER BY RAND() limit 1
评价:不建议使用,效率非常低,官方文档中进行说明:Order By和RAND()连用,会多次扫描表,导致速度变慢。
SELECT * FROM `table`
WHERE id &= (SELECT floor(RAND() * (SELECT MAX(id) FROM `table`)))
ORDER BY id LIMIT 1;
& & & 解释:SELECT MAX(id) FROM `table` 这句话查询出最大的id值&
& & & & & & &&
SELECT floor(RAND() * (SELECT MAX(id) FROM `table`))
&这句获取一个小于MAX(id)的随机数
WHERE id &= (SELECT floor(RAND() * (SELECT MAX(id) FROM `table`)))
&这句话筛选出所有的大于生成随机数的id的行
& & 然后最后就把大于这个随机id的行查询出来,然后按照id排序,选择第一个,就相当与获取了所有行中随机的一行。
& & & & &评价:有问题,如果id不是从0开始的话,比如从10000开始自增,那么 SELECT floor(RAND() * (SELECT MAX(id) FROM `table`))
&得到的将是会哟很大概率得到小于10000的值,经过where限定的查询结果将会是所有的查询结果的几率变大,最后limit 1获取的是第一行数据的几率变高。
SELECT * FROM `table`
WHERE id &= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECTMIN(id) FROM `table`)))
ORDER BY id LIMIT 1;
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+
(SELECT MIN(id) FROM `table`)) AS id) AS t2
WHERE t1.id &= t2.id
ORDER BY t1.id LIMIT 1;
评价:解决了方法二中MAX(id)的问题,RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECTMIN(id) FROM `table`)可以获取MAX(id)和MIN(id)中的随机数。
以上解决方案都默认有一个不重复的数字字段,其实现在很多表的设计都是以一个自增段作为主键,当然还有一些是以uuid作为主键的,而没有数字键,这样的话,可以用mysql的函数将uuid的字符串转换成数字。而且还有一个问题,如果id字段的数字分布不均匀的话(比如按照1,4,5,6,7,8,45这样分布),也会造成随机查询的不合理,但是这里就不讨论那么复杂的问题了。
二、随机查询多条数据
方法一:把随机查询一条数据的limit
&1修改成limit 5
评价:这样获取的数据会是连续的。
FROM `table` AS t1 JOIN (
SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id
from `table` limit 50) AS t2 on t1.id=t2.id
ORDER BY t1.id LIMIT 1;
SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id
from `table` limit 50)这样会获取50个随机数字,然后on
&t1.id=t2.id会挑选出不大于50行的随机数据,然后取5条就好了。}

我要回帖

更多关于 零基础学大数据现实吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信