【问题标题】:Getting Random Output Using MySQL使用 MySQL 获取随机输出
【发布时间】:2015-03-18 08:16:00
【问题描述】:

我有一个包含超过 100,000 个值的数据库。结构如下所示:

标识 |乡村 |网络ID |类别ID |标题 |添加日期

如果我使用基本的 RAND() 考虑到有这么多的 id,它将无法返回随机结果。我最终看到彼此相邻的相同 webid 的标题。我宁愿显示来自不同网络的标题。因此,我认为由于只有 4-5 个不同的 webid 值,因此基于此随机化输出可能是更好的选择。在使用 mysql SELECT 命令时,我无法弄清楚如何定义应随机化的特定列值。

我目前正在使用以下

SELECT * FROM table WHERE countryid='1' ORDER BY dateaddedon DESC, RAND(3)

我目前使用 3 作为种子值。我不确定种子价值对兰德有什么样的影响。如果有人也能解释一下,我将不胜感激。

【问题讨论】:

  • 如果每次都指定相同的种子值,那么每次都会得到相同的结果!
  • 是的,我知道,但我在最后一部分要问的是,如果我将种子值设置为 10,它会对随机化产生更大的影响吗?

标签: php mysql random


【解决方案1】:

如果指定了种子值,它会产生一个可重复的列值序列。除非您需要可重复的值,否则请忽略它。此外,如果您应该将 RAND() 作为 ORDER 中的第一个子句。

SELECT * FROM table WHERE countryid='1' ORDER BY RAND(),dateaddedon DESC 

【讨论】:

  • 这将具有相同的效果,因为它不会根据 webid 随机化输出。它只是基于 id 随机的
  • 我认为 id 是唯一的,这是什么问题。如果您尝试根据其他标准强制某种结果,您将没有随机性。
  • 保持 id 唯一性的问题是条目太多。我希望 webid 最多交替出现,如果不是至少随机出现的话,这样当显示数据时,不应该是属于同一 webid 的所有条目都显示在彼此旁边。
猜你喜欢
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多