mysqli查询在参数内有50%,另一半是随机的

时间:2015-05-26 22:07:01

标签: php mysql pdo mysqli

所以,我在这里挣扎着提出一个问题:

是否可以在我的sql中进行类似的查询:

  • 至少20%的A类结果
  • 至少15%的B类结果
  • 至少10%的C类结果
  • 至少10%的D类结果

和其他50%随机(a,b,c,d,e,f,g等类别)?

我试图搜索一段时间,但没有找到一个好的答案,所以我希望这里的任何人都可以提供一个好的提示。

提前致谢!!

在有人要求并给我一个大拇指之前,我问这个问题,以便我可以浏览我的网站访问者。它根本不是一个随意的问题。

PS:php标签是因为有时我使用php函数来解决这类问题而网站是基于php的

1 个答案:

答案 0 :(得分:1)

我不确定你到底想要做什么,但我认为你可以用不同的方法解决你的问题,但无论如何我想到了你的问题,我想到的唯一想法是:

*假设您总共有5000行,并且您希望只选择50行,其中这50行按照您的百分比分配。

$limit = 50;
$cat_a_per = $limit *0.2; // 20% of the results
$cat_b_per = $limit *0.1; // 10% instead of yours 15% because 15% is incorrect ( try to sum percentages up :) ) 
$cat_c_per = $limit *0.1; // 10% of the results
$cat_d_per = $limit *0.1; // 10% of the results

$rest_per =  $limit*0.5; // the rest 50%

 // Now create a 5 mysql queries like the following :
"Select * From my_table where cat='A' limit $cat_a_per" ..
"Select * From my_table where cat='B' limit $cat_b_per" ..
"Select * From my_table where cat='C' limit $cat_c_per" ..
"Select * From my_table where cat='D' limit $cat_d_per" ..
 "Select * From my_table  limit $rest_per" ..

现在在一个数组中总结结果或使用UNION,你很高兴...