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

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

Stack Overflow用户
提问于 2021-08-26 09: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 09: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

复制
相关文章
ClickHouse中,WHERE、PREWHERE子句和SELECT子句的使用
在ClickHouse中,WHERE和PREWHERE子句都用于筛选数据,但它们在查询中的使用有一些区别和注意事项。
一凡sir
2023/10/20
1.8K0
ClickHouse中,WHERE、PREWHERE子句和SELECT子句的使用
MySQL | Having子句的使用
数据操作语言:HAVING 子句 分组查询遇到的困难? 查询部门平均底薪超过2000元的部门编号 错误示范 SELECT deptno FROM t_emp WHERE AVG(sal) >=2000 -- 错在这里出现了聚合函数 GROUP BY deptno; 引入 HAVING 子句 SELECT deptno FROM t_emp GROUP BY deptno HAVING AVG(sal)>=2000; HAVING 子句的用途 查询每个部门中,1982 年以后入职的员工超过 2 个人的部门编
Zkeq
2022/05/18
9100
用于 SELECT 和 WHERE 子句的函数
1 一个 SQL 语句中的 select_expression 或 where_definition 可由任何使用了下面所描述函数的表达式组成。 2 3 包含 NULL 的表达式总是得出一个 NULL 值结果,除非表达式中的操作和函数在文档中有另外的说明。 4 5 注意:在一个函数名和跟随它的括号之间必须不存在空格。这有助于 MySQL 语法分析程序区分函数调用和对恰巧与函数同名表或列的引用。然而,参数左右两边的空格却是允许的。 6 7 你可以强制 My
用户1112962
2018/07/03
4.8K0
SQL学习之SELECT子句顺序
下面来总计下之前的随笔中所说过的所有的SELECT子句的顺序。 子句            说明            是否必须使用 SELECT                  要返回的列或者表达式                            是 FROM                     从中检索数据的表                     仅在从表中选择数据时使用 WHERE                          行级过滤                       
郑小超.
2018/01/24
8920
mysql学习笔记(六)select查询子句与子查询
后面跟列名依据这个列名进行分类汇总,一般跟函数相关联使用如SUM,COUNT,AVG等等...
逆回十六夜
2020/02/08
1.3K0
[MySQL]select和where子句优化
数据库优化: 1.可以在单个SQL语句,整个应用程序,单个数据库服务器或多个联网数据库服务器的级别进行优化 2.数据库性能取决于数据库级别的几个因素,例如表,查询和配置设置 3.在数据库级别进行优化,在硬件级别进行优化,平衡可移植性和性能 4.合适的结构,合适的数据类型;执行频繁更新的应用程序大量表(少列);分析大量数据的应用程序少量表(多列);选择合适的存储引擎和索引; 5.压缩适用于InnoDB表的各种工作负载,以及只读MyISAM表 6.选择合适的锁定策略;InnoDB存储引擎可以处理大多数锁定问题 7.配置的主要内存区域是InnoDB缓冲池和MyISAM密钥缓存。 8.优化select语句,这方面技巧同样适用于其他带where的delete语句等,在where子句的列上设置索引;索引对于引用多个列如join和外键尤其重要
唯一Chat
2019/09/10
1.6K0
ClickHouse中ARRAY JOIN子句和JOIN子句的使用
在ClickHouse中,ARRAY JOIN子句用于查询和展开数组数据。它可以将一个数组字段展开为多个行,以便在查询结果中分别处理每个数组元素。
一凡sir
2023/10/20
1.7K0
ClickHouse中ARRAY JOIN子句和JOIN子句的使用
mysql中update和select结合使用
在遇到需要update设置的参数来自从其他表select出的结果时,需要把update和select结合使用,不同数据库支持的形式不一样,在mysql中如下:
全栈程序员站长
2022/07/19
2.1K0
ClickHouse中的WITH、FROM、SAMPLE子句的使用
在这个查询中,main_table代表主查询中的表,name代表之前定义的临时表,在JOIN子句中指定了连接条件,然后使用WHERE子句过滤查询结果。
一凡sir
2023/10/20
2.3K0
ClickHouse中的WITH、FROM、SAMPLE子句的使用
MySQL使用ORDER BY子句对数据排序
如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。
用户4988376
2021/08/12
1.4K0
MySQL HAVING 子句
上一章阿常给大家讲了MySQL 分组函数,今天我们讲 MySQL HAVING 子句。
程序媛淼淼
2022/09/01
7230
MySQL HAVING 子句
MySQL中INSERT INTO SELECT的应用
这种方法常用在目标表已经存在数据库中.需要从源表把数据插入到目标表的情况.如果目标表和源表的列相同,就不必列出数据列了.(未完待续,另参考资料中重复项太多,暂且作为记录,后期再做增删整理)
WindCoder
2018/09/20
3.3K0
SQL聚合函数 JSON_ARRAYAGG
一个简单的JSON_ARRAYAGG(或JSON_ARRAYAGG ALL)返回一个JSON数组,其中包含所选行中string-expr的所有值。 字符串-expr为空字符串(")的行由数组中的(" u0000")表示。 字符串-expr为NULL的行不包含在数组中。 如果只有一个字符串-expr值,并且是空字符串("),JSON_ARRAYAGG将返回JSON数组["\u0000"]。 如果所有的string-expr值为NULL, JSON_ARRAYAGG返回一个空的JSON数组[]。
用户7741497
2022/03/27
2K0
一文搞懂select语句在MySQL中的执行流程!
MySQL作为互联网行业使用最多的关系型数据库之一,与其免费、开源的特性是密不可分的。然而,很多小伙伴工作了很多年,只知道使用MySQL进行CRUD操作,这也导致很多小伙伴工作多年后,想跳槽进入大厂,却在面试的时候屡屡碰壁。
Bug开发工程师
2021/04/13
4.1K0
一文搞懂select语句在MySQL中的执行流程!
【MYSQL函数】MYSQL中IF函数在where中的使用
WHERE IF(条件, true执行条件, false执行条件) 业务需求: 查询SUPPLIER_CLASS=0 and tp1.`TYPE_FLAG` = 1 或者 SUPPLIER_CLASS=1 实现有两种:
用户5640963
2019/07/25
12.2K0
SQL中,having子句和where子句的区别
在SQL之中,where和having的功能有点像,导致我一直搞不清楚这两者的区别。因此今天专门研究了以下,在此记录。
灯珑LoGin
2022/10/31
2.6K0
【说站】mysql select语法的使用
1、SQL语句中的关键词对大小写不敏感,SELECT等效于SELECT,FROM等效于from。
很酷的站长
2022/11/24
4820
【说站】mysql select语法的使用
ClickHouse中的HAVING、ORDER BY和LIMIT BY子句的使用
在ClickHouse中,HAVING子句用于对查询结果进行条件过滤。它用于在GROUP BY子句之后对聚合结果进行筛选。
一凡sir
2023/10/21
1.2K0
ClickHouse中的HAVING、ORDER BY和LIMIT BY子句的使用
深入了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数
在MySQL数据库中,JSON格式的数据处理已经变得越来越常见。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它可以用来存储和表示结构化的数据。MySQL提供了一些功能强大的JSON函数,其中两个关键的函数是JSON_ARRAYAGG和JSON_OBJECT。本文将深入探讨这两个函数的用途、语法和示例,以帮助您更好地理解它们的功能和用法。
修己xj
2023/09/12
7170
深入了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数
MySQL中的WITH ROLLUP子句:优化数据分析与汇总
在MySQL中,优化数据查询和生成报表是至关重要的任务,WITH ROLLUP是一个用于在查询结果中生成合计行的特殊子句。它可以在GROUP BY子句中使用,以在结果中添加额外的行,显示分组的合计值。
修己xj
2023/08/25
2.2K0
MySQL中的WITH ROLLUP子句:优化数据分析与汇总

相似问题

MySQL使用select in or子句的结果

20

在SELECT子句中使用Mysql IF语句?

30

Mysql select with in子句不使用索引

24

MySQL在SELECT子句子查询中不使用索引

23

来自select中另一个表的Mysql JSON_ARRAYAGG

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档