MySQL RAND(),如何从列值中计算权重

时间:2014-10-22 11:56:56

标签: mysql

- 解决 -

假设您有一个条目表,其中entry1的权重为20,entry2的权重为80.运行查询,如

SELECT * FROM `entries` ORDER BY RAND() LIMIT 1    

会随机返回任意一行。但是,我想要考虑权重,这样entry2有80%的机会被抽出而entry1有20%。

是否有正确/ hacky编写此查询的方法?以前,我必须为entry1插入20个条目,为entry2插入80个条目,以便很好地表示每个权重。

1 个答案:

答案 0 :(得分:0)

我相信以下内容可以满足您的需求:

select *
from entries e
order by weight * rand()
limit 1;