MySQL实现表中取出随机数据

2016-01-29 14:59 8 1 收藏

MySQL实现表中取出随机数据,MySQL实现表中取出随机数据

【 tulaoshi.com - MySQL 】

以前在群里讨论过这个问题,比较的有意思.mysql的语法真好玩.他们原来都想用PHP的实现随机,但取出多条好像要进行两次以上查询.翻了手册,找到了下面这个语句,可以完成任务了。

SELECT * FROM table_name ORDER BY rand() LIMIT 5;

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

mysql select RAND();
- 0.5925
mysql select RAND(20);
- 0.1811
mysql select RAND(20);
- 0.1811
mysql select RAND();
- 0.2079
mysql select RAND();
- 0.7888

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/mysql/)

  你不能在一个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被执行时重新评估。

  但我试了一下,8千条记录的表,执行一次需要0.08 sec,.慢了些

  后来请教了google,得到如下代码

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/mysql/)

SELECT * FROM table_name AS r1 JOIN ( SELECT ROUND(RAND() * (SELECT MAX(id) FROM table_name)) AS id) AS r2 WHERE r1.id = r2.id ORDER BY r1.id ASC LIMIT 5;

来源:http://www.tulaoshi.com/n/20160129/1494924.html

延伸阅读
/*1.从同一个种子开始*/ #include stdio.h #include conio.h static unsigned long int next=1;int rand0(void) { next=next*1103515245+12345; return (unsigned int)(next/65536)%32768; }int main(void) { int count;for(count=0;count5;count++)    printf("%hd",rand0()); getch();...
标签: Web开发
弄个随机数的东西,直接从网上找了一个现成的,简单看了两眼,感觉算法应该是对的,但今天测试下来,是不对的; 网上大多数人用的写法是这样的: function getRandomA(rMin,rMax) {     var range = rMax - rMin;  var r = rMin + Math.round( Math.random() * range);     return r; } 用十万的量跑了...
那么我们如何从数据库表中检索数据呢?      1、从数据库表中检索信息     实际上,前面我们已经用到了SELECT语句,它用来从数据库表中检索信息。     select语句格式一般为:     SELECT 检索关键词 FROM 被检索的表 WHERE ...
标签: Web开发
弄个随机数的东西,直接从网上找了一个现成的,简单看了两眼,感觉算法应该是对的,但今天测试下来,是不对的; 网上大多数人用的写法是这样的: function getRandomA(rMin,rMax) {     var range = rMax - rMin;  var r = rMin + Math.round( Math.random() * range);     return r; } 用十万的量跑...
1. 用您的会员名登录无忧空间站,左侧控制面板点击“自助管理”-“数据库”,选择您的数据库点“管理”,点击“高级管理” 2. 出现MYSQL高级管理登录框,用您的数据库用户名,密码登录,在登陆时,需要根据您的数据库编码选择对应的语言,一般可以选择“Chinese Simplified (zh-utf-8)”和“Chinese Simplified (zh-gb2312)”,根据你...

经验教程

371

收藏

82
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部