SQL:如何有效地对重叠组进行排序

SQL: How to sort overlapping groups efficiently

我正在尝试在包含 10.000 多行的数据库上进行分组。 我需要快速高效,所以我正在为每个集群做二进制变量。 一、二、四、五和六在 Group1 中。

但是 'Two' 也可能在第 nr 组中。 2,由于我无法克服的错误,因为我的数据集来自网络抓取。我尝试以独特的方式对所有内容进行排序,但如果我希望高效快速,基本上不可能不出错。

ID   Title    Group1      Group2     Group3      Ungrouped
1    One      1           0          0           0
2    Two      1           1          0           0
3    Three    0           1          1           0
4    Four     1           0          1           0
5    Five     1           0          0           0
6    Six      1           1          1           0
7    Seven    0           0          0           1

我的解决方案:

  1. 分配(一个)组,直到所有内容都被分组一次或多次。
  2. 查询分配了多个组(2、3、4、6)的所有内容
  3. 手动决定要删除哪些 1,直到每个只分配一个组。

手动完成第 3 部分实际上是个好主意,因为它需要对文档进行内容分析)

我的问题:

我如何指定,我需要查看不止一组的所有内容?它与约束和唯一值有关,还是有一种我没有看到的更简单明显的方法?

如果您的簇存储为整数,您可以这样做:

select c.*
from clusters c
where (cluster1 + cluster2 + cluster3) > 1;

我不知道 SQLite 中的 "binary variable" 是什么。有些数据库确实支持二进制标志,您需要将 where 子句的值转换为整数。