我有一张表格,里面有引号排(ID, QUOTE)
,我有一个查询来获得随机报价(ORDER BY RAND() LIMIT 0,1)
。我知道它很慢,但我没有太多的行。所以现在我想得到一天的报价。它应该是一个随机引用,但在一天中不可更改。我不想添加新的列,我不想选择当天的报价。我只是想要一个会得到一个随机引用的查询,但以某种方式来说,整天的报价将是相同的,第二天它将返回其他随机引用。如何做到这一点SQL Palladins?如何获得当天的随机行?
回答
使用种子基于当前日期的随机数生成器:
ORDER BY RAND(20120714) LIMIT 1
我也好奇你说的“其他”在这里的意思:
和第二天它将返回其他随机报价。
如果你想每天选择不同的随机报价,那么你不应该使用一个简单的ORDER BY RAND(seed)
。这可能会连续三天返回相同的报价。
如果您想避免发生这种情况,您可以改为存储每天选择哪种报价,并从过去n天内未使用的报价中选择随机报价。当然,如果您在上次使用报价时进行存储,那么您的原始问题也有自然的解决方案:
- 查找上次使用的报价。
- 如果有,那就是当天的报价。
- 如果不是,则从过去n天未使用的行中选择一天中的新报价,并更新该行以显示它是今天当天的报价。
我不想添加新列
OK,怎么样一个稍微不同的方法:
ORDER BY RAND(201207) LIMIT 14, 1
-- yyyymm dd
现在你不需要额外的列,你不会得到重复,除了可能当月改变。此解决方案假定您至少有32个引号可供选择。
我喜欢1千行,所以它不是一个很大的风险,我有2倍相同的报价。即使它会发生 - 它不是一个biggie。 –
rand(yyymm)的最后一个订单如何工作?我无法弄清楚...... –
@tomaszs:排序顺序将在一个月的每一天都是相同的,每一天它会从列表中选择下一个(限制偏移量更改)。当它到达下个月时,清单将被重新洗牌。 –
解决此问题可能涉及编写一个应用程序,该应用程序每天一次选择您的ID最大值和最小值;从该范围计算一个随机数;然后将该编号写入文件。
负责打印报价的应用程序将根据 存储在文件中的ID选择报价。
现在有足够的语言,如Python,Perl,PHP和其他语言有很好的数据库接口。 Python也有一个随机库。
- 1. 如何使用nhibernate获得随机行?
- 2. 如何获得随机数
- 3. 如何获得随机ID的
- 4. 如何获得好的随机结果
- 5. 如何获得真正的随机数?
- 6. 如何获得LogicalTypes的随机值
- 7. 如何获得当月的第一天?
- 8. 如何获得随机发言
- 9. Android如何获得随机sqlite数据?
- 10. HandlebarsJS如何从JSON获得随机值
- 11. 如何随机获得两次
- 12. OpenGL C++如何获得随机值?
- 13. 如何获得当年有多少天?
- 14. 如何用awk获得给定分布的随机行?
- 15. 如何获得内部连接使用MySQL中的随机行?
- 16. SQL优化来获得随机行
- 17. 如何在CakePHP 3.0中获得一个随机行?
- 18. Laravel 5如何使用集合获得许多随机行
- 19. 从mysql获得随机值
- 20. 如何在随机发生器中获得50/50的机会
- 21. 获得随机“连接是只读” - 春天
- 22. 每天获得一组“静态”随机值
- 23. 无法从随机类中获得一个随机的int值
- 24. 如何获得随机种子给予前2个伪随机数
- 25. SAS如何通过组获得随机选择随机分成多个组
- 26. 如何获得随机数的数组中的Fortran
- 27. 如何获得随机的0和1的数字
- 28. 每次获得不同的随机值
- 29. RichTextBlock中的图像随机获得
- 30. MySQL的限制1获得随机(1,8)
我建议你有一个计划的任务,将得到一个随机报价并将其保存到一些文本文件。这项任务每天执行一次。并阅读此文件的内容,而不是每次要加载当天的报价时对数据库进行查询。 – yasar