从mysql中获取随机记录在php中

时间:2012-08-09 06:47:17

标签: php mysql

我想从mysql表中获取随机记录。我知道我们可以使用rand()获取顺序,但它似乎是大字段的缓慢过程。我们可以通过其他方式获取rand记录。

4 个答案:

答案 0 :(得分:2)

如果您有一些主键Id,则可以在MIN(Id)MAX(Id)之间选择一个随机数并获取该项。如果具有该Id的项目不存在,只需再试一次。

答案 1 :(得分:2)

你可以先获得兰特偏移量

SELECT FLOOR(RAND() * COUNT(*)) AS rnd FROM your_table

然后使用偏移量选择记录。

答案 2 :(得分:1)

SELECT name
FROM random JOIN
     (SELECT CEIL(RAND() *
             (SELECT MAX(id)
              FROM random)) AS id
     ) AS r2
     USING (id);

您的问题已经在这里得到解答:

How can i optimize MySQL's ORDER BY RAND() function?

http://jan.kneschke.de/projects/mysql/order-by-rand/

答案 3 :(得分:0)

你可以试试这个:

SELECT * FROM  table 
join 
  (select round(rand()*(select max(id) from table)) as val from table) as rnd
on rnd.val=table.id;