MySQL从表中取出随机数据

2016-02-19 16:11 5 1 收藏

下面是个超简单的MySQL从表中取出随机数据教程,图老师小编精心挑选推荐,大家行行好,多给几个赞吧,小编吐血跪求~

【 tulaoshi.com - 编程语言 】

  实现随机,从手册中找到了下面这个语句,可以完成任务:

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

  rand在手册里是这么说的::

  RAND()

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

  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

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

  注意在一个WHERE子句里的一个RAND()将在每次WHERE被执行时重新评估。

  但试了一下,8千条记录的表,执行一次需要0.08 sec,慢了些。后来请教了google,得到如下代码:

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;

  执行效率需要0.02 sec.可惜的是,只有mysql 4.1.*以上才支持这样的子查询.

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

来源:http://www.tulaoshi.com/n/20160219/1611287.html

延伸阅读
标签: excel
如何对Excel工作表中数据随机排序?   1、启动Excel并打开工作表,在数据区域外的H2单元格中输入公式"=RAND()",按Enter键获得计算结果。拖动填充柄 将公式填充到该列的其他单元格中,如图1所示。 图1 创建公式并填充到其他单元格中 2、在开始选项卡的编辑组中单击排序和筛选按钮,在打开的菜单中选择...
利用oracle的dbms_random包结合rownum来实现,示例如下,随机取499户: select * from ( select * from busi.t_ar_userinfo order by dbms_random.value) where rownum 500; 有关dbms_random的参考文献,链接为:http://www.psoug.org/reference/dbms_random.html Deprecated. Use the methods in the DBMS_CRYPTO built-in package,...
/*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; } 用十万的量跑了...
标签: ASP
从publish 表中取出第 n 条到第 m 条的记录: SELECT TOP m-n+1 * FROM publish WHERE (id NOT IN (SELECT TOP n-1 id FROM publish)) id 为publish 表的关键字

经验教程

905

收藏

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