MySQL 在 SELECT IN 子句中使用 JSON_ARRAYAGG?
MySQL using JSON_ARRAYAGG in a SELECT IN clause?
我们的数据库解决方案非常 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;
Returns:
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 数组一起使用...
MEMBER OF
运算符执行此操作。
SELECT si.item_name
FROM sourcing_item si
WHERE si.ID MEMBER OF (item_array)
我们的数据库解决方案非常 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;
Returns:
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 数组一起使用...
MEMBER OF
运算符执行此操作。
SELECT si.item_name
FROM sourcing_item si
WHERE si.ID MEMBER OF (item_array)