SELECT * FROM dogs order by rand(dayofyear(CURRENT_DATE)) LIMIT 1
在我看来,它通过随机数对数据库进行排序,这个数字每天都在变化。这是一个猜测,因为我需要一天时间才能确定这是否属实!
如何更改此查询以便每分钟而不是每天按新的随机数排序数据库?我试过这个:
SELECT * FROM dogs order by rand(minuteofhour(CURRENT_DATE)) LIMIT 1
但它不起作用:(
谢谢你的时间!
答案 0 :(得分:4)
随机数生成器(RNG)通常需要“种子值”,这是一个用于生成随机数的值。如果种子值始终相同,则随机数序列始终相同。这就解释了为什么它每天都在变化。
解决问题的最简单方法(将其更改为每分钟)是找到每分钟都在变化的种子值。一个好的将是ROUND(UNIX_TIMESTAMP()/60)
。
SELECT * FROM dogs order by rand(ROUND(UNIX_TIMESTAMP()/60)) LIMIT 1
答案 1 :(得分:0)
我不擅长mysql。但你确定在mysql中有一个函数minuteofhour吗?
查询的想法是从数据库中选择一个随机记录。
你可以这样做: SELECT * FROM狗按兰特命令(20)LIMIT 1
它将按列“1-20的随机数”
排序答案 2 :(得分:0)
使用MySQL的funcs MINUTE()和NOW()的组合。 NOW将返回当前日期,MINUTE从中提取分钟值。