我们的数据库解决方案非常依赖JSON,因此,我们的SQL查询都是基于JSON的(在大多数情况下)。这包括广泛使用JSON_ARRAYAGG()。
我遇到的问题是在WHERE IN中使用返回的索引数组,这根本不起作用。据我所知,这是一个简单的格式化问题,其中MySQL需要一个()封装,而JSON数组是一个[]封装。
例如:
SELECT COUNT(si.ID) AS item_count, JSON_ARRAYAGG(si.ID) AS item_array
FROM sourcing_item si;
返回:
7, [1,2,3,4,5,6,7]
我需要做的是编写一个复杂的嵌套查询,允许选择JSON_ARRAYAGG结果中的记录IN。像这样:
SELECT si.item_name
FROM sourcing_item si
WHERE si.ID IN item_array
当然,上面的方法不起作用,因为MySQL不能识别[]和. ()。
这个问题有可行的解决方法吗?我很惊讶他们还没有更新MySQL来允许WHERE IN子句与JSON数组一起工作……
发布于 2021-08-26 17:44:58
MEMBER OF
操作符执行此操作。
SELECT si.item_name
FROM sourcing_item si
WHERE si.ID MEMBER OF (item_array)
https://stackoverflow.com/questions/68942696
复制相似问题