我有一个包含引号的数据库。我喜欢显示随机报价。但是有两个条件。
不应选择上周显示的报价。
过去显示报价的距离越远,选择报价的机会就越大。
首先不是那么困难。我可以为此使用WHERE子句。
第二个我不知道如何实现。有没有简单的方法可以执行此操作,还是需要为此定义一个复杂的函数?
一种扩展可能也很好。最初,大多数报价都不会显示。如果有可能提供一个尚未显示的报价,但显示的机会更大,那将是非常不错的。
最佳答案
一种可能的方法:按过去使用报价的时间长度排序,乘以随机数。这具有使过去更重的记录具有更大的权重的效果。
这是伪代码:
select quote from quotes
where current date - display date > 1 week
order by ((current date - display date - 1 week) * random number) desc
fetch first row only
您将不得不使其适应系统的日期/时间功能,因为这些功能高度可变。
您可能需要使用一个中间步骤将随机数应用于每一行,因为在许多系统上,直接按
rand()
排序并不起作用。更新:这是a working MySQL example。
关于sql - 如何增加选择旧报价的机会,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15222274/