请解释一下这个mysql查询。

时间:2013-03-11 00:47:53

标签: mysql

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

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

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

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

但它不起作用:(

谢谢你的时间!

3 个答案:

答案 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从中提取分钟值。