2011-10-31 284 views
0

我正在一個網站上工作,我有兩種類型的提供(最佳報價和熱門報價)從數據庫中提取。我已將記錄限制爲1.因此,只有一個熱門報價記錄和一個最佳報價記錄應該被用戶查看。現在我必須在刷新頁面時對每個報價進行洗牌。也就是說,當任何人刷新頁面時,下一個熱門報價(來自數據庫)應該取代之前的熱門報價,並且應該在最佳報價中相同。頁面刷新時刷新MySQL記錄

回答

1

添加ORDER BY RAND() LIMIT 1你的MySQL查詢結束IFF你的表很小。

如果是大的,那麼這是做(因爲它仍評估每一行),這樣你會更好計數的行數的非常低效的方式:

SELECT MAX(id), COUNT(*) FROM table 

,然後挑選一個隨機ID($id = rand(1,$count);),然後選擇該行

SELECT * FROM table WHERE id = $id 

如果有刪除的行(這最後的命令返回什麼)然後再選擇一個隨機ID,然後再次運行前面的命令。第一個查詢中的COUNT(*)可以確保至少有一行。

對於存在大量已刪除行的表,此外,它還會假設您有一個auto_increment字段。

+0

$ offer_query =「select * from offer where offer_type ='2'LIMIT 1」; \t \t \t \t \t \t $ offer_result =的mysql_query($ offer_query)或死亡( 「錯誤」); \t \t \t \t \t \t while($ rowoffer = mysql_fetch_array($ offer_result)){}上面是我的查詢。現在我該如何使用計數? – bid

+0

$ offer_query =「select * from offer where offer_type ='2'LIMIT 1」; $ offer_result = mysql_query($ offer_query)或死(「錯誤」); while($ rowoffer = mysql_fetch_array($ offer_result)){} 以上是我的代碼。 現在如何在這裏使用$ count? – bid

2

使它隨機,否則你必須保持頁面上顯示的報價狀態以獲得下一個報價。 以下查詢將有所幫助。

SELECT * from tbl_offers ORDER BY RAND() LIMIT 0,1;