- 解决 -
假设您有一个条目表,其中entry1的权重为20,entry2的权重为80.运行查询,如
SELECT * FROM `entries` ORDER BY RAND() LIMIT 1
会随机返回任意一行。但是,我想要考虑权重,这样entry2有80%的机会被抽出而entry1有20%。
是否有正确/ hacky编写此查询的方法?以前,我必须为entry1插入20个条目,为entry2插入80个条目,以便很好地表示每个权重。
答案 0 :(得分:0)
我相信以下内容可以满足您的需求:
select *
from entries e
order by weight * rand()
limit 1;