根据集合中值的存在设置布尔列的值

Setting value of boolean columns based on existence of value in set

我有一个 SQL table 格式 (INTEGER, json_array(INTEGER)).

我需要 return 来自具有两个布尔列的 table 结果。如果一个 1 出现在 json_array 中,一个设置为真,另一个设置为真,如果数组中出现一个二。显然没有互斥。

例如,如果数据是这样的:

-------------------------------
| ID       |   VALUES         |
-------------------------------
|  12      |  [1, 4, 6, 11]   |
_______________________________
|  74      |  [0, 1, 2, 5]    |
-------------------------------

我希望能回来:

-------------------------------
| ID       |   HAS1  |  HAS2  |
-------------------------------
|  12      |  true   | false  |
_______________________________
|  74      |  true   | true   | 
-------------------------------

我已经使用 json_each 从值列中提取了 json 数据,但我不确定如何继续。

如果我没记错的话,SQLite max 聚合函数支持布尔值,因此您可以简单地按数据分组:

select
    t1.id,
    max(case json_each.value when 1 then true else false end) as has1,
    max(case json_each.value when 2 then true else false end) as has2
from
    yourtable t1,
    json_each(t1.values)
group by
    t1.id