Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何获取当天的随机行?_Mysql_Sql - Fatal编程技术网

Mysql 如何获取当天的随机行?

Mysql 如何获取当天的随机行?,mysql,sql,Mysql,Sql,我有一个表,表中有几行引号(ID,QUOTE),我有一个查询来获取一个随机引号(ORDER BY RAND()LIMIT 0,1)。我知道它很慢,但我没有太多的行。所以现在我想得到当天的报价。它应该是一个随机引用,但在一天内不可更改。我不想添加新列,也不想选择当天的报价。我只是想要一个查询,将得到一个随机报价,但在某种程度上,报价将是全天相同的,第二天它将返回其他随机报价。如何做到这一点 根据当前日期为随机数生成器使用种子: ORDER BY RAND(20120714) LIMIT 1 我

我有一个表,表中有几行引号
(ID,QUOTE)
,我有一个查询来获取一个随机引号
(ORDER BY RAND()LIMIT 0,1)
。我知道它很慢,但我没有太多的行。所以现在我想得到当天的报价。它应该是一个随机引用,但在一天内不可更改。我不想添加新列,也不想选择当天的报价。我只是想要一个查询,将得到一个随机报价,但在某种程度上,报价将是全天相同的,第二天它将返回其他随机报价。如何做到这一点

根据当前日期为随机数生成器使用种子:

ORDER BY RAND(20120714) LIMIT 1

我也很好奇你在这里所说的“其他”是什么意思:

第二天,它将返回其他随机报价

如果您希望每天选择不同的随机报价,则不应使用简单的
按兰德(种子)排序的订单
。这可能会连续三天返回相同的报价

如果您想避免这种情况发生,您可以存储每天选择的报价,并从过去n天未使用的报价中随机选择一个报价。当然,如果您正在存储上次使用报价的时间,那么您的原始问题也有一个自然的解决方案:

  • 查找今天最后一次使用的引用
  • 如果有,那就是今天的引语
  • 如果没有,则从过去n天内未使用的行中选择当天的新报价,并更新该行以显示它是今天的报价

我不想添加新列

好吧,换一种稍微不同的方法怎么样:

ORDER BY RAND(201207) LIMIT 14, 1
--            yyyymm        dd

现在您不需要额外的列,也不会得到重复,除非月份发生变化。此解决方案假定您至少有32个引号可供选择。

根据当前日期为随机数生成器使用种子:

ORDER BY RAND(20120714) LIMIT 1

我也很好奇你在这里所说的“其他”是什么意思:

第二天,它将返回其他随机报价

如果您希望每天选择不同的随机报价,则不应使用简单的
按兰德(种子)排序的订单
。这可能会连续三天返回相同的报价

如果您想避免这种情况发生,您可以存储每天选择的报价,并从过去n天未使用的报价中随机选择一个报价。当然,如果您正在存储上次使用报价的时间,那么您的原始问题也有一个自然的解决方案:

  • 查找今天最后一次使用的引用
  • 如果有,那就是今天的引语
  • 如果没有,则从过去n天内未使用的行中选择当天的新报价,并更新该行以显示它是今天的报价

我不想添加新列

好吧,换一种稍微不同的方法怎么样:

ORDER BY RAND(201207) LIMIT 14, 1
--            yyyymm        dd

现在您不需要额外的列,也不会得到重复,除非月份发生变化。此解决方案假设您至少有32个引号可供选择。

解决此问题可能需要编写一个应用程序,每天选择一次IDs max和min;从该范围计算一个随机数;然后把这个数字写入一个文件

负责打印报价单的应用程序将根据所打印的ID选择报价单 已存储在该文件中


现在已经有足够多的语言,如Python、Perl、PHP和其他语言具有良好的DB接口。Python还有一个随机库

解决这个问题可能需要编写一个应用程序,每天选择一次IDs max和min;从该范围计算一个随机数;然后把这个数字写入一个文件

负责打印报价单的应用程序将根据所打印的ID选择报价单 已存储在该文件中


现在已经有足够多的语言,如Python、Perl、PHP和其他语言具有良好的DB接口。Python还有一个随机库

我建议您有一个计划任务,该任务将获得一个随机引用并将其保存到某个文本文件中。让此任务每天执行一次。并读取此文件的内容,而不是每次要加载当天的报价时都对数据库进行查询。我建议您安排一项任务,以获取随机报价并将其保存到某个文本文件中。让此任务每天执行一次。并读取此文件的内容,而不是每次要加载当天的报价时都对数据库进行查询。我有1000行,所以我有2倍相同报价的风险不大。即使它会发生,也不是什么大问题。@tomasz:一个月内每天的排序顺序都是一样的,每天都会从列表中取下一个排序顺序(限制偏移量改变)。当它到达下个月时,列表将被重新调整。+标志着令人印象深刻的解决方案。谢谢这不适用于SQLite。我们在sqlite中也有这个问题的解决方案吗?我有1000行,所以我有2倍于相同报价的风险不大。即使它会发生,也不是什么大问题。@tomasz:一个月内每天的排序顺序都是一样的,每天都会从列表中取下一个排序顺序(限制偏移量改变)。当它到达下个月时,列表将被重新调整。+标志着令人印象深刻的解决方案。谢谢这不适用于SQLite。我们在sqlite中也有解决这个问题的方法吗?