【发布时间】:2012-02-20 13:56:58
【问题描述】:
当每个表都有一个用于保存位掩码枚举的字段时,我有一个 sqlite 表。
我想执行一个查询,它将返回所有结果并将所有枚举分组到一个字段中:
服务:TEXT 名称、INTEGER 服务、INTEGER 掩码
SELECT service,XXX FROM Services GROUP BY service
基本上,我希望 XXX 是每个服务的所有掩码的位掩码 OR (|) 的结果。
数据:
'a1',1,1
'a2',1,2,
'a3',1,4,
'a4',1,8,
'b1',2,1,
'b2',2,3,
'b3',2,2
因此,我想得到以下行:
1,15 (1|2|4|8)
2,3 (1|3|2)
谢谢
编辑: 在我最初的问题中,我忘了提到每个掩码不是单个位,而是可以是多个位的掩码(我已更改第二个示例以反映这一点)。
【问题讨论】:
-
我认为在你的例子中你的意思是结果显示 2,3 因为它是基于你的例子的 (1|2|2)
-
你是对的 - 谢谢。我已经解决了。
-
您是否提前知道所有可能使用的位图掩码值?即 1, 2, 4, ... 4096?
标签: sqlite select group-by bitmask