MySql搜索作为给定集的子集的集合

时间:2014-05-22 22:29:07

标签: mysql subset

我正在解决MySQL关于子集的问题。 我被给(一个表(?))一些需要检查它们是否是特定集的子集的集合。

SELECT子集FROM表WHERE子集IN(SpecificSet);

一个小例子可能是:

SpecificSet: 
1,2,3,4,5

Subsets: 
1,2,3
4,5
4,5,6
1,2,5
1,5,6

Result:
1,2,3
4,5
1,2,5

实现表结构和运行查询的智能方法是什么?

1 个答案:

答案 0 :(得分:0)

是否可以将您的设置存储为INT?

如果是这样,你可以使用二进制和(&)来获得交集。每个设置位将表示多于2 ^(n-1)=位(n)

的数字

示例:

具体集:1,2,3,4,5 = 2 ^ 0 + 2 ^ 1 + 2 ^ 2 + 2 ^ 3 + 2 ^ 4 = 00 ... 11111 = 31

子集:

1,2,3 = 7

4,5 = 24

4,5,6 = 63

交叉口将是:

31& 7 = 7

31& 24 = 24

31& 63 = 24