在我的PHP程序环境中,这个查询每分钟回应一个新的数据库项,这正是我想要的。
SELECT * FROM dogs ORDER BY rand(ROUND(UNIX_TIMESTAMP()/60)) LIMIT 1
然而,当我这样做时:
SELECT * FROM dogs WHERE dateused<44 ORDER BY rand(ROUND(UNIX_TIMESTAMP()/60)) LIMIT 1
WHERE查询有效,但rand中的数字不是种子。每次运行此查询时,都会导致新数据库项的回显。
任何人都有任何想法如何让这个号码播种一分钟?或者至少,一个解决方案。非常感谢!
答案 0 :(得分:0)
尝试这种方式:SELECT * FROM dogs ORDER BY rand(MINUTE(NOW())) LIMIT 1
答案 1 :(得分:0)
正如文档所述,“从MySQL 5.1.16开始,如果使用非常量初始值设定项(例如列名)作为参数,则使用每次调用RAND()的值初始化种子”({ {3}})。
但这适用于MySQL 5.1.16及更高版本。从MySQL 5.1.3到5.1.15,不允许使用非常量参数。在此之前,使用非常量参数的效果是未定义的。
因此,如果您从非常量参数得到不一致的结果,那么它可能是您的MySQL版本。
我尝试了你在5.1.47 MySQL上所做的事情,并且它按照你希望的方式工作。