发布
社区首页 >问答首页 >在SELECT in子句中使用JSON_ARRAYAGG的MySQL?

在SELECT in子句中使用JSON_ARRAYAGG的MySQL?
EN

Stack Overflow用户
提问于 2021-08-26 17:03:25
回答 1查看 76关注 0票数 0

我们的数据库解决方案非常依赖JSON,因此,我们的SQL查询都是基于JSON的(在大多数情况下)。这包括广泛使用JSON_ARRAYAGG()。

我遇到的问题是在WHERE IN中使用返回的索引数组,这根本不起作用。据我所知,这是一个简单的格式化问题,其中MySQL需要一个()封装,而JSON数组是一个[]封装。

例如:

代码语言:javascript
代码运行次数:0
复制
SELECT COUNT(si.ID) AS item_count, JSON_ARRAYAGG(si.ID) AS item_array
FROM sourcing_item si;

返回:

代码语言:javascript
代码运行次数:0
复制
7, [1,2,3,4,5,6,7]

我需要做的是编写一个复杂的嵌套查询,允许选择JSON_ARRAYAGG结果中的记录IN。像这样:

代码语言:javascript
代码运行次数:0
复制
SELECT si.item_name
FROM sourcing_item si
WHERE si.ID IN item_array

当然,上面的方法不起作用,因为MySQL不能识别[]和. ()。

这个问题有可行的解决方法吗?我很惊讶他们还没有更新MySQL来允许WHERE IN子句与JSON数组一起工作……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-26 17:44:58

MEMBER OF操作符执行此操作。

代码语言:javascript
代码运行次数:0
复制
SELECT si.item_name
FROM sourcing_item si
WHERE si.ID MEMBER OF (item_array)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68942696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档