mysql查询

如何用mysql按照百分比拿数据 比如在一个表里面 type=1 随机拿40% type=2 随机拿 30% type=3 拿 20% 其余拿 10%
语言是thinkphp,该如何写sql呢

阅读 2k
2 个回答

请设定一个要获取的记录总数,比如:100条。

随机获取 type = 1 的数据取 40%,也就是 100 * 40% = 40 条:

$total = 100;
$type_for_4 = floor($total * 0.4);
$id_list = db()->name('tb_name')->where('type' , 1)->column('id');
$id_list = random($id_list , $type_for_4);
$res = db()->name('tb_name')->where('type' , 1)->whereIn('id' , $id_list)->select();
// 随机获取的 type = 1 的数据
print_r($res);
// 同理获取 type =2 , 3 , 其他

1、获取指定类型数据总数(count 查询);
2、按百分比算出要取出数据总数;
3、使用 limit 查询出指定数量的数据。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题