我们有用于代表帐户的按位类型表。每个帐户都可以包含子类型。
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位设置)。
我可能需要澄清一下
我认为这个查询会做你想要的。它求和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