现在有 A 表和 A 的子表 B 表,由于历史原因 B 表有重复导入数据,例如重复导入两次,A 表是执行更新操作只有一条数据,而 B 表是会有两份属于 A 表的数据,B 表没有生成时间或者什么字段可以区分开重复导入,只有每条的 ID 不同。A 表中有总金额是正确的,B 表中把其中一份数据的金额加起来就会等于 A 表中的金额.
重复导入的数据大概有几千笔 A 表数据,目前的做法是先测试一份重复导入的数据,把重复导入归属同个 A 表的 B 表数据提取出来,进行 DFS 全排列,如果在排列的过程中累计金额等于 A 表的金额则判断是为一组,如果出现多种组合累计金额等于 A 表金额则输出来人工判断,这种方案有个问题就是全排列的效率很低,当长度大于 10 的时候就会很慢了。
如果有更好的思路,希望能不吝赐教,谢谢。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.