2011-10-31 220 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;