首页 新闻 会员 周边 捐助

关于数据库根据权重读取数据的问题

0
悬赏园豆:50 [待解决问题]

MSSQL:

有一张表tab如下:
create   table   tab
{
        id                     int,
        name                 varchar(20),
        priority         int,   --优先级
        rate                 int     --同优先级权重          
}
怎么样 按照权重来进行取数据。比如:tab里有100条数据,我想根据权重随机读取2条,权重越大被取出的机会越大。

SoftWareBoy的主页 SoftWareBoy | 初学一级 | 园豆:95
提问于:2011-10-28 17:16
< >
分享
所有回答(4)
0

你按权重排序,再找出top 2的不就行了?

LCM | 园豆:6876 (大侠五级) | 2011-10-28 17:23
0

排序的时候先按照权重排序,后面加一个随即数排序,最后top2即可

小小刀 | 园豆:1991 (小虾三级) | 2011-10-29 09:20
0

select top 2 [priority], ROW_NUMBER() over(order by newid())*[priority] as a from [tab] order by a desc

写得比较恶心,但功能是实现了,我觉得这个东西,不妨交由程序来做,让数据库去干这个事,有点强人所难

丁学 | 园豆:18730 (专家六级) | 2011-10-29 20:56
0

按照优先级和权重group 然后去最大的。

chenping2008 | 园豆:9836 (大侠五级) | 2011-10-30 18:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册