以下是问题的要点:给定一个集合列表,例如:
请注意“粘性”-集合(6,12,13)与(1,2,3)没有共同元素,但由于(5,2,6),它们被放在同一组中。
更加复杂的是,我应该提到我实际上没有这些整洁的集合,而是一个包含数百万行的数据库表,看起来像:
[ (1,2,3), (5,2,6), (7,8,9), (6,12,13), (21,8,34), (19,20) ]
返回一个集合组的列表,使具有共享元素的集合在同一组中。
[ [ (1,2,3), (5,2,6), (6,12,13) ], [ (7,8,9), (21,8,34) ], [ (19,20) ] ]
请注意“粘性”-集合(6,12,13)与(1,2,3)没有共同元素,但由于(5,2,6),它们被放在同一组中。
更加复杂的是,我应该提到我实际上没有这些整洁的集合,而是一个包含数百万行的数据库表,看起来像:
element | set_id
----------------
1 | 1
2 | 1
3 | 1
5 | 2
2 | 2
6 | 2
等等。因此,我希望有一种在SQL中完成它的方法,但是如果能给出解决方案的一般方向,我也会很高兴。
编辑:将表格列名更改为(元素,集合ID)而不是(键,组ID),以使术语更加一致。请注意Kev的答案使用了旧的列名。