【发布时间】:2021-08-26 17:03:24
【问题描述】:
我们的数据库解决方案非常依赖 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 结果中的记录 ID。喜欢:
SELECT si.item_name
FROM sourcing_item si
WHERE si.ID IN item_array
当然上述方法不起作用,因为 MySQL 无法识别 [] 与 ()。
这个问题有可行的解决方法吗?我很惊讶他们没有更新 MySQL 以允许 WHERE IN 子句与 JSON 数组一起使用...
【问题讨论】: