sql引用的整数(以多个位总计)

时间:2019-03-01 21:45:07

标签: mysql bit-manipulation

我们有用于分类帐户的按位类型表。每个帐户可以有子“类型”。

Table: types

id | title | int | types | family
1    foo     1     7       ?
2    bar     2     1       ?
3    baz     4     3       ?

我们使用该表已经很长时间了,它的工作原理很好,因为计数永远不会超过20。(为清楚起见,省略了一个帐户ID列。)

使用'int'和'types'获取ID列表很简单。但是我将如何建立一个类型家庭? (在“类型”列中引用了每种类型。)在上面的示例中,记录2族为(int 1+ int 4)= 5,因为在记录1和3中引用了它(因为7和3都具有2位)。

我可能需要澄清

1 个答案:

答案 0 :(得分:0)

我认为此查询将满足您的要求。它对每一行的int值求和,其中types的值包括目标行的int的值:

SELECT t1.*, SUM(t2.int) AS family
FROM types t1
JOIN types t2 ON t2.types & t1.int != 0
GROUP BY t1.id, t1.title, t1.int, t1.types

输出:

id  title   int     types   family
1   foo     1       7       7
2   bar     2       1       5
3   baz     4       3       1

Demo on dbfiddle