【发布时间】:2013-05-23 19:50:55
【问题描述】:
我需要根据另一行的权重从表中选择随机行。就像用户输入随机值 50 一样,我需要从表中选择 50 个随机行,因为权重较高的行返回的次数更多。我看到使用 NEWID() 来选择 n 个随机行和这个链接
Random Weighted Choice in T-SQL
我们可以根据另一行的权重选择一行,但我需要根据用户随机输入数选择几行,所以最好的方法是使用上面链接中的建议答案并循环它 n 个次(但我认为它会返回同一行)还有其他简单的解决方案吗?
我的桌子是这样的
ID Name Freq
1 aaa 50
2 bbb 30
3 ccc 10
所以当用户输入 50 时,我需要返回 50 个随机名称,所以它应该比 ccc 更多 aaa、bbb。可能像 25 aaa、15 bbb 和 10 ccc。任何与此接近的东西都可以。我看到了这个答案,但是当我对我的数据库执行时,它似乎运行了 5 分钟并且还没有结果。 SQL : select one row randomly, but taking into account a weight
【问题讨论】:
-
以下是什么意思?
...being that the rows with higher weight gets returned more number of times. -
@AbeMiessler 在问题中添加了更多解释,谢谢
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
@MartinSmith sql server 2012
-
当您说“权重较高的行返回的次数更多”时,您的意思是同一行可以多次返回吗?
标签: sql-server stored-procedures