【发布时间】:2015-05-18 06:34:18
【问题描述】:
我有一张大致如下所示的表格:
id | unique | group
----------------------------------
1 | aaa | group1
2 | bbb | group1
3 | ggg | group1
4 | iii | group2
5 | ooo | group2
6 | eee | group3
7 | ttt | group4
8 | qqq | group4
9 | nnn | group4
我想从这个表中选择一个大致大小为N 的随机子集。 N 条目应该属于groups 的子集,无论是哪个group,无论组大小如何,它们都应该在组级别上随机排序。例如,对于N==3,我想要一个
[ooo, iii, eee](即来自 group2 的条目,然后是 group3)或
[eee, iii, ooo](即来自 group3 的条目,然后是 group2)或
[ttt, nnn, qqq](即来自 group4 的条目)或
[qqq, nnn, ttt](即来自 group4 的条目)或
[eee, ggg, bbb, aaa](即来自 group3 的条目,然后是 group1)或
...
没有“完全”选择一个组我很好。
我不经常这样做,我更喜欢多个查询而不是一个复杂的查询。 N 将在 100 左右,该表的条目 N 不需要完全匹配。我在 Python/Mysqldb 中执行此操作,但我对一般算法/方法很感兴趣。
此外,一旦处理了N 条目,我想在下一次运行时忽略它们,要么简单地删除它们,要么设置一些附加属性。在后一种情况下,需要调整查询。
编辑:为澄清而更改。
【问题讨论】: