我有一个城市表,上面有:“名称”和“人口”。我想随机选择一个城市,但要以人口为基础。
纽约-19.000.000城市2-1.000.000
因此,与“城市2”相比,获得“纽约”的机会要多19倍。
当然,此表有更多城市。
埃德·金答案对我没有用。我不知道为什么。
数学上看起来很棒。
但是我在一张桌子上插入了30万个随机城市。大约90%的城市人口最多。这个城市仅占国家总人口的5%。所以我得到了一个非常奇怪的结果。
也许mysql正在缓存RAND()之类的东西..我不知道。
我自己在上面写了这个sql,我的测试是正确的。
SELECT @som := 0, @sorted := FLOOR( RAND()*(SELECT SUM(population) FROM cities ) );
SELECT ord.id, ord.initial, ord.final FROM
(
SELECT
id, @som+1 AS initial, @som := @som + population AS final
FROM cities
) ord
HAVING @sorted
BETWEEN
ord.initial AND ord.final;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句