首页 > 解决方案 > 如何使用 JSON 函数从 mysql 中的另一个数组中删除数组元素?

问题描述

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

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

预期结果:

["1"]

我们可以遍历@b 并从@a 中一一删除。

但我正在寻找最佳解决方案。我期待像 JSON_REMOVE_ALL(); 这样的东西

请补充您的想法...

标签: mysqlarrays

解决方案


下面使用 JSON 函数来提取@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;
结果
[“1”]

在 DB Fiddle 上查看


推荐阅读