根据集合中值的存在设置布尔列的值
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
我有一个 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