我的表格包含
等列
现在我的要求是获取30个随机问题,并且标记的总数应为120。
我知道如何获取30个随机问题,即使用以下查询:
通过随机限制30从问题顺序中选择*
我也知道如何找到标记列的总和,即使用以下查询:
从问题中选择总和(标记)
但我仍然坚持如何检查条件,即我带来的30个随机问题是标记栏总数为120的那些。
答案 0 :(得分:0)
我想到解决这个问题的一种方法(没有进入递归或循环直到得到正确的总数)是如果你知道标记的扩散,你可以拉出随机列表中的每一个的设定数量。
EG。 (标记* n)+(标记* n)+(标记* n)= 120又名(4 * 20)+(5 * 8)= 120标记
并在SQL中:
select * from
(
select * from questions where marks = 4 order by random limit 20
union all
select * from questions where marks = 5 order by random limit 8
) a
我想你甚至可以推导出一个数学公式来随机化传播,给你一个真正的随机选择。
希望这有帮助。
保罗P答案 1 :(得分:0)
您的问题是knapsack problem(所有对象的权重和值相等)。
在SQL中几乎不可能解决它;您应该只阅读所有问号并在代码中实现solution。