从 MySQL 中获取 PHP 中的随机记录


fetch randomly record in php from mysql

我想从mysql表中获取随机记录。我知道我们可以通过 rand() 使用 order 进行获取,但对于大字段来说,这似乎是缓慢的过程。我们能不能有其他方法来获取兰德记录。

你可以先得到一个兰特偏移

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

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

如果你有一些主键Id你可以在MIN(Id)MAX(Id)之间选择一个随机数,然后得到该项目。如果具有该Id的项目不存在,请重试。

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

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

如何优化 MySQL 的 ORDER BY RAND() 函数?

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

你可以试试这个:

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