根据两列选择随机平衡记录

时间:2017-02-26 04:57:48

标签: java mysql sql database record

Sample Table

我想根据2个列,主题和分类法从该表中选择6个随机记录。记录的选择必须平衡,主题和分类的重复应保持最小。是否有算法执行此操作?

任何有关SQL或java的帮助都将不胜感激。谢谢提前

1 个答案:

答案 0 :(得分:0)

您可以使用有序集上的第n个样本执行此操作。它类似于:

select t.*
from (select t.*, (@rn := @rn + 1) as rn
      from t cross join
           (select @rn := 0) params
      order by topics, taxonomy
     ) t cross join
     (select count(*) as cnt from t) tt
where rn % floor(cnt / 6) = 1;

我们的想法是使用模运算来获取每个第n个值到6个。您可能需要调整where中的确切参数,具体取决于数据的大小。