如何根据分配给每一行的概率机会从数据库中选择随机行。 例子:
Make Chance Value ALFA ROMEO 0.0024 20000 AUDI 0.0338 35000 BMW 0.0376 40000 CHEVROLET 0.0087 15000 CITROEN 0.016 15000 ........
如何根据必须选择的可能性来选择随机的品牌名称及其值。
rand()和ORDER BY可以结合使用吗?如果是这样,最好的方法是什么?
rand()
ORDER BY
您可以通过使用rand()然后再使用累积和来执行此操作。假设它们的总和为100%:
select t.* from (select t.*, (@cumep := @cumep + chance) as cumep from t cross join (select @cumep := 0, @r := rand()) params ) t where @r between cumep - chance and cumep limit 1;
笔记:
limit 1
cumep > @r