2012-08-09 82 views
0

我想从mysql表中取出随机记录。我知道我们可以使用rand()的顺序来获取,但是对于大型的领域它似乎是一个缓慢的过程。我们可以通过其他方式来获取rand记录。从php中随机记录取自mysql

+0

看看这个问题http://stackoverflow.com/questions/4329396/mysql-select-10-random-rows-from-600k-rows-fast – Nick 2012-08-09 06:52:58

回答

2

你可以得到一个兰特首先

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

然后通过使用偏移来选择一条记录。

2

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

0

你可以试试这个:

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