我要尋找這樣做的更好的辦法:返回一個隨機行不使用ID,MySQL的
SELECT * FROM $tbl_name WHERE id >= (SELECT FLOOR(MAX(id) * RAND()) FROM $tbl_name) ORDER BY id LIMIT 1;
它是緩慢的,也不是很隨機的,我得到了相同的結果,每10個左右查詢的。
這將從表中選擇一個隨機行,而不管其ID如何。
到目前爲止,我有這樣的:
// Get amount of rows in database
$result = mysql_query("SELECT * FROM $tbl_name");
$num_rows = mysql_num_rows($result);
// Generate random number
$random_row = rand(1, $num_rows);
但我不知道怎麼去某行。
我的意思不是
SELECT * FROM $tbl_name WHERE id = $random_row
因爲我的數據庫有ID列的差距,因此有時會失敗。
有沒有人得到一個腳本,可以從一個MySQL數據庫的隨機結果沒有答覆的ID和超級快? (該數據庫包含大約20000行)
只需添加,這是用於高流量的網站,所以速度很重要。 – Adam 2012-04-21 20:23:28
經過一些搜索,雖然在鏈接Adi發送的評論,我找到了一個體面的解決方案。 SELECT * FROM $ tbl_name T JOIN(SELECT CEIL(MAX(ID)* RAND())AS ID FROM $ tbl_name)AS x ON T.ID> = x.ID LIMIT 1; 來源:http://wanderr.com/jay/order-by-slow/2008/01/30/ 似乎是非常快速和非常隨機! – Adam 2012-04-21 20:52:25
'//獲取數據庫中的行數量 - 事實上,您選擇的不是金額,而是選擇了包含此查詢的所有行。去圖 – 2012-04-29 05:32:35