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