2012-08-09 73 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;