两个方案: 方案一,最容易理解: 建一个新表,表中只有一个字段,记录id(不要设置成非重复)。然后将原表中的记录 id 写入此表,权重 n 就写 n 次。 按新表的记录数求随机整数,结果就是所求记录的序号,取 id 即可。
方案二,原理相同,只是不必真正另外建表: 在表中增加一个字段,存前面所有记录的权重累加值(注意此累加值按 id 顺序计算)。 以一个查询求出权重的总和 —— select sum(权重) from 表。 取随机数时乘以此总和得到随机整数。 select top 1 * from 表 where 权重累加值 < 随机整数 order by id
发表于:2008-01-07 10:10:485楼 得分:0
谢谢! 请问"在表中增加一个字段,存前面所有记录的权重累加值(注意此累加值按 id 顺序计算)。 "如何实现?