MSSQL:
有一张表tab如下: create table tab { id int, name varchar(20), priority int, --优先级 rate int --同优先级权重 } 怎么样 按照权重来进行取数据。比如:tab里有100条数据,我想根据权重随机读取2条,权重越大被取出的机会越大。
你按权重排序,再找出top 2的不就行了?
排序的时候先按照权重排序,后面加一个随即数排序,最后top2即可
select top 2 [priority], ROW_NUMBER() over(order by newid())*[priority] as a from [tab] order by a desc
写得比较恶心,但功能是实现了,我觉得这个东西,不妨交由程序来做,让数据库去干这个事,有点强人所难
按照优先级和权重group 然后去最大的。