2012-09-16 91 views
1

我想找出一種方法來選擇表中的所有記錄並以隨機順序顯示它們。以隨機順序顯示記錄

我在此查詢

$sql = mysql_query("SELECT * FROM table ORDER BY RAND()"); 

聽到很多關於RAND()喜歡,但就我所知,這只是選擇的記錄,如20

隨機數將如何選擇所有的記錄,但只顯示他們在隨機順序?

感謝

+0

上面的查詢返回隨機記錄....然後,你想要什麼? –

+0

我忘了我有極限1在對不起 – Arken

回答

1

你最好選擇所有的條目和離開隨機顯示器到PHP。整個ORDER BY RAND()需要很多的資源。 ORDER BY RAND()操作實際上會重新查詢表格的每一行,並指定一個隨機數字ID,然後傳遞結果。

$sql = mysql_query("SELECT * FROM table ORDER BY RAND() LIMIT 1"); 

但據我所知,這只是選擇的記錄,如20

錯誤一個隨機數:這將選擇所有記錄,然後重新排列「隨機」,給你的第一行:LIMIT 1,只是離開它。

SELECT * FROM table ORDER BY RAND() 

以上查詢的表的每一行生成一個隨機值:

$sql = mysql_query("SELECT * FROM table ORDER BY RAND()"); 
0

這僅僅是這樣的:

SELECT * FROM table ORDER BY RAND() 

通過降低LIMIT 1你可以得到所有的記錄進行排序隨機...

0

把你的結果在一個數組,然後只是shuffle()它。

並擺脫mysql_*功能,女孩不再喜歡它們了。

+0

好吧,你是什麼意思,擺脫mysql_ *?這是什麼意思,我該怎麼做呢?感謝您的幫助 – Arken

+0

@ moonwave99當MySQL可以通過RAND()輸出時,爲什麼我們將所有的數組放在一個數組中並隨機播放?爲什麼要做額外的編碼並向服務器添加額外的處理? – Night2

+1

@Arken php告訴他們的數據庫庫像php_mysql.dll,php_mssql.dll是舊的,他們將來不會被支持,他們希望我們使用mysqli或基於PDO的庫... – Night2

1

我不是你的問題太多清楚不過,你可以通過簡單地具有以下查詢獲取隨機順序的所有記錄,根據這些隨機值對該表進行排序,並根據排序的行返回。因此,您將擁有隨機順序的所有記錄。