gpt4 book ai didi

python - 带随机化的加权数据库查询

转载 作者:行者123 更新时间:2023-11-29 22:10:08 25 4
gpt4 key购买 nike

我有一个数据库模型,其中有一个名为“权重”的正整数列。还有其他列,但它们对于这个问题并不重要。权重列基本上描述了这一行的“重要性”。权重值越高,越重要。权重范围仅为 0 - 3。默认值为 0(最不重要)。

我想执行一个查询,选择按权重列排序的 50 行,但已稍微随机化,并且包含权重低于结果中的行。

例如,按权重排序的前 50 行的权重可能全部为 3 和 2。查询需要包含大部分这些结果,但也包括一些权重为 1 和 0 的结果。它们需要稍微随机化同样,相同的查询并不总是返回相同的结果。另外,即使它将结果限制为 50 个,它也需要最后执行此操作,否则将以不同的顺序返回相同的 50 个结果。

这将集成到 Django 项目中,但数据库是 MySQL,因此原始 SQL 就可以了。

性能至关重要,因为这将发生在高流量网站的着陆页上。

任何想法将不胜感激。

谢谢

最佳答案

您可以将 rand() 函数与 weight 列结合使用

select * from YOUR_TABLE order by weight * rand() desc

请注意,这意味着权重 3 比权重 2 更有可能出现在开头。

权重 0 始终出现在末尾,因为 0 * 任何数字都始终为 0。如果您不喜欢这样,可以向权重添加 1 并将查询转换为

select * from YOUR_TABLE order by (weight + 1) * rand() desc

显然,如果您只需要前 50 个值,则可以将 limit 子句添加到查询中

关于python - 带随机化的加权数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31759791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com