问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MySQL实现随机获取几条数据的方法

发布网友 发布时间:2022-04-30 18:46

我来回答

4个回答

懂视网 时间:2022-04-30 23:08

复制代码

rand在手册里是这么说的:
RAND()
RAND(N)
返回在范围0到1.0内的随机浮点值。如果一个整数参数N被指定,它被用作种子值。

  1. mysql> select RAND();
  2.         -> 0.5925
  3. mysql> select RAND(20);
  4.         -> 0.1811
  5. mysql> select RAND(20);
  6.         -> 0.1811
  7. mysql> select RAND();
  8.         -> 0.2079
  9. mysql> select RAND();
  10.         -> 0.7888
复制代码

你 不能在一个ORDER BY子句用RAND()值使用列,因为ORDER BY将重复计算列多次。然而在MySQL3.23中,你可以做: SELECT * FROM table_name ORDER BY RAND(),这是有利于得到一个来自SELECT * FROM table1,table2 WHERE a=b AND c<d ORDER BY RAND() LIMIT 1000的集合的随机样本。注意在一个WHERE子句里的一个RAND()将在每次WHERE被执行时重新评估。

网上基本上都是查询max(id) * rand()来随机获取数据。

  1. SELECT *
  2. FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2
  3. WHERE t1.id >= t2.id
  4. ORDER BY t1.id ASC LIMIT 5;
复制代码

但是这样会产生连续的5条记录。解决办法只能是每次查询一条,查询5次。即便如此也值得,因为15万条的表,查询只需要0.01秒不到。

上面的语句采用的是JOIN,mysql的论坛上有人使用

  1. SELECT *
  2. FROM `table`
  3. WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` )
  4. ORDER BY id LIMIT 1;
复制代码

我测试了一下,需要0.5秒,速度也不错,但是跟上面的语句还是有很大差距
后来请教了baidu,得到如下代码
完整查询语句是:

  1. SELECT * FROM `table`
  2. WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`))) 
  3. ORDER BY id LIMIT 1;
复制代码
  1. SELECT *
  2. 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
  3. WHERE t1.id >= t2.id
  4. ORDER BY t1.id LIMIT 1;
复制代码

最后在php中对这两个语句进行分别查询10次,
前者花费时间 0.147433 秒
后者花费时间 0.015130 秒

执行效率需要0.02 sec.可惜的是,只有mysql 4.1.*以上才支持这样的子查询.
注意事项 查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低。

以上的sql语句最后一条,本人实际测试通过,100W数据,瞬间出结果。

MySQL随机获取数据的方法,支持大数据量

标签:

热心网友 时间:2022-04-30 20:16

1.随机读取连续多条记录。经过实践,可以随机读取多条连续的数据记录,里头取值的一般都是主键ID来进行最大值、最小值的读取:

SELECT * FROM example_table  AS t1  JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM example_table)-(SELECT MIN(id) FROM example_table))+(SELECT MIN(id) FROM example_table)) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 5;

2.随机多条数据。以下两种都是随机读取数据,查询数据速度、随机范围都基本相差不大

SELECT * FROM example_table WHERE id >= ((SELECT MAX(id) FROM example_table)-(SELECT MIN(id) FROM example_table)) * RAND() + (SELECT MIN(id) FROM example_table) LIMIT 5;

SELECT * FROM example_table WHERE id>=(SELECT floor(RAND() * ((SELECT MAX(id) FROM example_table)-(SELECT MIN(id) FROM example_table)) + (SELECT MIN(id) FROM example_table))) ORDER BY id LIMIT 5;

热心网友 时间:2022-04-30 21:34

1. SELECT * FROM address WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM address))) ORDER BY id LIMIT 0,10
2. SELECT *,RAND() as r FROM address ORDER BY r LIMIT 0,10

热心网友 时间:2022-04-30 23:08

一朋友发图片来说
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
极联股份和曲径科技有关系吗 ...热,太阳晒 热,激动,一般就几分钟就好了,全身都会痒 我一发热就浑身奇痒无比,求命丫! ...发热出汗的时候,全身就会痒起来,像被蚂蚁咬一样。 土地挂牌价都包含哪些 如何计算挂牌地价 挂牌地价包含哪些 长期戴清镜有什么坏处 LOL里AD AP ADC APC 等是什么意? 英雄联盟lol怎么判断一个英雄是ad、ap还是adc 醋如何美白呢? 上海37岁女子在商务楼内行凶,持刀连砍5人,她为何这么做? 上海轨道地铁高架下绿化怎么能砍掉? 有好用的3.5转6.5音频线吗? 用3DMAX画一个简单的玻璃门效果图? 学校的大门怎么画 体育高考中的五米三项技巧,有谁能教教我? 湖北体育高考五米三项跑了三次失误两次第三次87分实际分数多少分? 五米三项折回跑的要领,我是四三三。 五米三项的步伐是怎样的? 五米三项544跑法 杀毒高手请进!! 请知道的朋友告诉我2011年湖南省体育特长生高考考试项目和评分标准,越详细越好,要有数据,定会重谢! www.0000-qq.cn/ 是属于腾讯公司的网站吗? 2011湖北体育高考项目怎么算分..100米 800米 二级蛙跳 原地推铅球 五米三项折回跑 三角形障碍跑 我要进www.51.com时就会弹出unknown software exception(0x0000fd),位置为0x7e28e505 是怎么回事??? 美的 微波炉 MK823ESJ-PA 23L烧烤怎么使用? 高考体育特长生考试项目如何评分 高三五项体考的评分标准是多少?我100米跑了11妙9,立定跳远2米77,实心球12米,五米三项往返跑8妙2,8... 求一个权威的足球网站! 上海酒吧砍人事件,谁了解啊,具体怎么回事啊? (上海)银杏树7月份银杏树叶子变黄,是怎麽回事? 简笔怎么画门 上海市奉贤区南桥镇纯K砍人事件真的假的 5.1功放用手机链接需要我3.5转6连花音频线吗? - 信息提示 男子交租时被房东砍伤,房东妻子拒绝赔偿:除了钱想怎么都行,你怎么看? - 信息提示 上海一精神病男子持刀砍人致9伤人,精神病人伤人事件频发该如何管? 上海一男子手持剪刀砍伤9人,其中包含2名民警,砍人者将会面临什么处罚? “砍来砍去总是差一刀”!上海律师砍价失败起诉拼多多,这是欺诈行为吗? 上海南汇酒吧砍人事件怎么没有后续了??是不是*消息了?网上只能找到3月29到30号事件!后面没 上海砍杀小学生,为什么有人要报复社 上海律师因为每次砍价差0.09起诉拼多多,你遭受过拼多多的类似套路吗? 一般生完孩子多久下奶 生完孩子多久下奶 孩子出生后几天下奶 生宝宝什么时候开奶 顺产生完孩子多久下奶 产后每个人下奶的时间都是一样的吗?和分娩方式有关吗?