【发布时间】:2021-09-14 21:54:21
【问题描述】:
set @a = '["1","2","3"]';
set @b = '["4","2","3"]';
我有两个 json 数组。 现在我想从@a 中删除@b 中的所有元素(如果存在)。否则忽略。
预期结果:
["1"]
我们可以循环遍历@b,并从@a中一一删除。
但我正在寻找最佳解决方案。 我期待类似 JSON_REMOVE_ALL();
请添加您的想法...
【问题讨论】:
set @a = '["1","2","3"]';
set @b = '["4","2","3"]';
我有两个 json 数组。 现在我想从@a 中删除@b 中的所有元素(如果存在)。否则忽略。
预期结果:
["1"]
我们可以循环遍历@b,并从@a中一一删除。
但我正在寻找最佳解决方案。 我期待类似 JSON_REMOVE_ALL();
请添加您的想法...
【问题讨论】:
以下使用 JSON 函数提取 @a 中不存在于 @b 中的元素。
@a 转换为之前的表格@a中的元素是否存在于@b中。架构 (MySQL v8.0)
查询 #1
set @a = cast('["1","2","3"]' as json);
没有要显示的结果。
查询 #2
set @b = cast('["4","2","3"]' as json);
没有要显示的结果。
查询 #3
SELECT
JSON_ARRAYAGG(num) result
FROM
JSON_TABLE(@a,"$[*]" COLUMNS(num json PATH "$" )) ta
WHERE JSON_CONTAINS(@b,num,'$')=0;
| result |
|---|
| ["1"] |
【讨论】: