SQL Server - 随机随机播放结果,但为每条记录分配权重
Posted
技术标签:
【中文标题】SQL Server - 随机随机播放结果,但为每条记录分配权重【英文标题】:SQL Server - Shuffle results randomly, but with a weight assigned to each record 【发布时间】:2011-07-06 18:00:04 【问题描述】:我知道使用 SQL Server 随机播放结果的常规方法是按NEWID()
排序,但我想改用加权随机播放。
我表中的每条记录都有一个从 1 到 10 的整数“重要性”。我想按 RAND()*Importance
排序,但 SQL Server 的 RAND()
为返回的每条记录返回相同的值。
有什么想法吗?
【问题讨论】:
您的意思是按重量排序、随机排序还是只是某种“加载骰子”,其中 10 的记录可能在 1 的记录之前? 加载骰子。如果我有两条记录,重要性值为 1 和 10,我希望看到 10 的记录在 10 次中出现大约 9 次。 【参考方案1】:看看SQL Server - Set based random numbers 的一些想法
【讨论】:
谢谢。 ABS(CHECKSUM(NEWID())) / 100 * Importance 完美地完成了这项工作。以上是关于SQL Server - 随机随机播放结果,但为每条记录分配权重的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 中的伪随机可重复排序(不是 NEWID() 和 RAND())