如何使用JSON函数从mysql中的另一个数组中删除数组元素


set @a = '["1","2","3"]';
set @b = '["4","2","3"]';

我有两个json数组。现在我想从@b中删除所有元素,如果它存在的话。否则忽略。

预期结果:

["1"]

我们可以循环遍历@b并从@a中逐个移除。

但我正在寻找一个最好的解决方案。

有没有类似JSON_REMOVE_ALL((的东西;

下面使用JSON函数提取@a中不在@b中的元素。

  • JSON_TABLE用于将@a转换为之前的表
  • JSON_CONTAINS用于检查@a中的元素是否存在于@b
  • 最后,JSON_ARRAYAGG将结果聚合为一个JSON数组值

架构(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;
结果
["1"]

相关内容

  • 没有找到相关文章

最新更新