我有包含列的表
现在我的要求是随机抽取 30 个问题,总分应该是 120。
我知道如何获取 30 个随机问题,即使用以下查询:
select * from questions order by random limit 30
我也知道如何找到标记列的总和,即使用以下查询:
从问题中选择总和(分数)
但是我被困在如何检查我带来的 30 个随机问题是那些总分数为 120 的问题。
我想解决这个问题的一种方法(在得到正确的总数之前不进行递归或循环)是,如果你知道标记的分布,你可以为每个标记的设定数量拉出随机列表。
例如。(标记*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