MySQL从表中取出随机数据

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

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

【 tulaoshi.com - 编程语言 】

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

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

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

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

  但试了一下,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;

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

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

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

延伸阅读
利用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();...
标签: ASP
从publish 表中取出第 n 条到第 m 条的记录: SELECT TOP m-n+1 * FROM publish WHERE (id NOT IN (SELECT TOP n-1 id FROM publish)) id 为publish 表的关键字
标签: ASP
  各位好今天我要告诉大家的是如何用ASP产生随机数。大家都知道大多数网站注册后 提供用户名和一个随机密码,但这个密码是如何产生的,现在我就向大家来介绍一下 请看下面的例子,用户可自行增加或减少随机的字符或数量。 <% Function gen_key(digits) 'Create and define array dim char_array(50) char_array(0) = "0"...
代码如下: select user_name,count(*) as count from user_table group by user_name having count1; 这个我在很早有发过一个asp下的ACCESS 的

经验教程

473

收藏

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