sql在多位总计中引用整数

问题描述 投票:0回答:1

我们有用于代表帐户的按位类型表。每个帐户都可以包含子类型。

Table: types

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

我们已经使用这个表很长时间了,因为计数永远不会超过20,所以它运行良好。(为了清楚起见,省略了一个帐户ID列。)

使用'int'和'types'获取id的列表是微不足道的。但是我怎么会得到一个类型的家庭? (其中每个类型在'types'列中引用。)在上面的示例中,记录2族将是(int 1+ int 4)= 5,因为它在记录1和3'类型'中引用(因为7和3都有2位设置)。

我可能需要澄清一下

mysql bit-manipulation
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.