以循环方式为每个配置选择前n个记录

wf82jlnq  于 2021-06-17  发布在  Mysql
关注(0)|答案(0)|浏览(194)

已经有一段时间了,我很难在一个我要做的算法上下功夫。表中存储了具有不同配置的对象的列表。
可以有m种不同类型的配置,例如a、b、c等。
每种类型的配置都可以有子类型

Object,Parent Configuration,Configuration,Rank
O1, A, A1, 1
O2, A, A2, 2
O3, A, A3, 3
O4, B, B1, 4
O5, B, B2, 5
O6, B, C1, 6
O7, C, C2, 7

给定一个用户,该用户希望n个对象具有按等级排列的指定配置中的任意配置,以便最大可能没有不同的对象配置,例如:
如果n==3,配置用户感兴趣的是a1、a2、b1、b2、c1、c2
然后一个普通的sql查询

SELECT *
FROM   table
WHERE  configuration IN ( a1, a2, b1, b2,
                          c1, c2 )
ORDER  BY rank
LIMIT  3;

然后输出对象o1、o2和o3,因为它们的秩是最高的,但最佳的解决方案是返回对象o1、o4、o6作为每个父配置的最高秩对象,
假设在上面的示例中n==4,那么输出将是o1、o4、o6和o2,因为我们已经用尽了所有不同类型的配置,所以我们再次返回顶级对象。
有什么帮助吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题