3
SELECT * FROM dogs order by rand(dayofyear(CURRENT_DATE)) LIMIT 1

在我看来,它通过一个随机数对数据库进行排序,并且这个数字每天都在变化。这是一个猜测,因为我需要一天的时间才能确定这是不是真的!

如何更改此查询以每分钟而不是每天按新的随机数对数据库进行排序?我试过这个:

SELECT * FROM dogs order by rand(minuteofhour(CURRENT_DATE)) LIMIT 1

但它没有用:(

谢谢你的时间!

4

3 回答 3

4

随机数生成器 (RNG) 通常需要一个“种子值”,即用于生成随机数的值。如果种子值始终相同,则随机数序列始终相同。这就解释了为什么它每天都在变化。

解决问题的最简单方法(将其更改为每分钟)是找到每分钟更改的种子值。一个很好的将是ROUND(UNIX_TIMESTAMP()/60)

SELECT * FROM dogs order by rand(ROUND(UNIX_TIMESTAMP()/60)) LIMIT 1
于 2013-03-11T00:51:20.977 回答
0

使用 MySQL 的 funcs MINUTE() 和 NOW() 的组合。NOW 将返回当前日期,MINUTE 从中提取分钟值。

于 2013-03-11T10:00:20.703 回答
0

我不擅长mysql。但是你确定mysql中有一个功能minuteofhour吗?

查询的想法是从数据库中选择一条随机记录。

你可以这样做:SELECT * FROM dogs order by rand(20) LIMIT 1

它将按列“1-20 的随机数”排序

于 2013-03-11T00:57:13.757 回答