假设表a有一个字段b,b存的是权重,范围0-100吧,我想随机查一条记录,但是按权重给出数据,该如何写呢
select * from a order by b desc
返回的结果集越前面的权重越高
比如
--------------
|b | 其余字段|
--------------
|100| xxxxxxx|
--------------
|97| xxxxxxx|
--------------
|6 | xxxxxxx|
--------------
|5 | xxxxxxx|
-------------
只取一条数据你还排什么序… 只随机取一条就完了 楼上的就是 要取多条才需要排序sql套一层就好 select * from (select * from a order by rand() limit n) aa order by b desc;
4 回答1.2k 阅读✓ 已解决
8 回答1.2k 阅读
3 回答1k 阅读✓ 已解决
2 回答1.7k 阅读
1 回答845 阅读✓ 已解决
2 回答1.2k 阅读
2 回答1k 阅读
楼上的回答全都会错意了,题主意思是根据权重设定随机几率,例如 A 的权重为10,B 的权重为 5,这个时候随机出现 A 的几率要比出现 B 的几率高。
你可以试试这个备选方案。
就是先取出权重列表再去根据权重随机出来的那个权重值,根据权重值去库里再随机查。