首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >请解释一下这个mysql查询。

问请解释一下这个mysql查询。
EN

Stack Overflow用户
提问于 2013-03-11 08:47:53
回答 3查看 81关注 0票数 3
代码语言:javascript
复制
SELECT * FROM dogs order by rand(dayofyear(CURRENT_DATE)) LIMIT 1

在我看来,它是按随机数对数据库进行排序的,而这个数每天都在变化。这只是一个猜测,因为我需要一天的时间才能知道这是不是真的!

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

代码语言:javascript
复制
SELECT * FROM dogs order by rand(minuteofhour(CURRENT_DATE)) LIMIT 1

但它不起作用:(

耽误您时间,实在对不起!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-11 08:51:21

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

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

代码语言:javascript
复制
SELECT * FROM dogs order by rand(ROUND(UNIX_TIMESTAMP()/60)) LIMIT 1
票数 4
EN

Stack Overflow用户

发布于 2013-03-11 08:57:14

我不擅长mysql。但是你确定在mysql中有一个函数minuteofhour吗?

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

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

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

票数 0
EN

Stack Overflow用户

发布于 2013-03-11 18:00:21

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15329606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档