使用标准函数json_insert 将项目插入到数组中。
> SELECT json_insert('[12,13,14]','$[#]',13) AS tempArray
tempArray
[12,13,14,13]
- 使用表值函数
json_each 将数组拆分为一个临时表。
> SELECT * FROM (SELECT json_insert('[12,13,14]','$[#]',13) AS tempArray), json_each(tempArray)
tempArray key value type atom id parent fullkey path
[12,13,14,13] 0 12 integer 12 1 $[0] $
[12,13,14,13] 1 13 integer 13 2 $[1] $
[12,13,14,13] 2 14 integer 14 3 $[2] $
[12,13,14,13] 3 13 integer 13 4 $[3] $
- 只取
value 列(因为不需要其他列)。
> SELECT value FROM (SELECT json_insert('[12,13,14]','$[#]',13) AS tempArray), json_each(tempArray)
value
12
13
14
13
- 使用
DISTINCT 删除重复项。
> SELECT DISTINCT value FROM (SELECT json_insert('[12,13,14]','$[#]',13) AS tempArray), json_each(tempArray)
value
12
13
14
- 使用聚合函数
json_group_array 将结果组合成一个JSON 数组文本值。
> SELECT json_group_array(DISTINCT value) FROM (SELECT json_insert('[12,13,14]','$[#]',13) AS tempArray), json_each(tempArray)
json_group_array(DISTINCT value)
[12,13,14]
- 将此语句粘贴到
UPDATE 语句中,将示例数组替换为对所需字段的引用。
UPDATE carts
SET product = (SELECT json_group_array(DISTINCT value) FROM (SELECT json_insert(carts.product,'$[#]',13) AS tempArray), json_each(tempArray))
WHERE id = 1