如何从mysql数据库中获取随机数量的行?

时间:2010-10-23 11:58:22

标签: mysql database

我在mysql数据库的某些表中有大约300条记录。我需要通过一个查询获取40个随机记录。如何编写查询? 需要帮忙 感谢。

6 个答案:

答案 0 :(得分:3)

对于喜欢你的小桌子,它应该足够了:

SELECT * FROM table ORDER BY RAND() LIMIT 40;

请注意,这不适用于大型表,因为由于使用了ORDER BY RAND(),MySQL必须进行表扫描并对表中的所有行进行排序。对于大型表,您必须在应用程序代码中实现这一点,跟踪您已经获得的行并生成随机ID以进行提取。

答案 1 :(得分:2)

您应该rand()使用order by,如下所示:

SELECT field1, field2
FROM tableName
ORDER BY RAND()
LIMIT 40

答案 2 :(得分:1)

order by rand()可能会导致性能问题,而是尝试按以下方式执行:

 // what NOT to do:  
 $r = mysql_query("SELECT username FROM user ORDER BY RAND() LIMIT 1");  

 // much better:  

 $r = mysql_query("SELECT count(*) FROM user");  
 $d = mysql_fetch_row($r);  
 $rand = mt_rand(0,$d[0] - 1);  

  $r = mysql_query("SELECT username FROM user LIMIT $rand, 1");    

答案 3 :(得分:0)

请注意,这不是一个快速解决方案,但只适用于300条记录

SELECT [rows]
FROM [table]
ORDER BY RAND()
LIMIT 40

答案 4 :(得分:0)

您应该在RAND()子句中使用WHERE

但是你首先在表格

中创建片段40 /行数

例如:

SELECT * FROM [TABLE_NAME] WHERE RAND()< 0.0005;

答案 5 :(得分:-2)

SELECT * FROM table ORDER BY RAND()LIMIT 40