首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql 5.7.12 json提取和

问mysql 5.7.12 json提取和
EN

Stack Overflow用户
提问于 2022-10-31 19:55:20
回答 1查看 36关注 0票数 0

我需要“总价值”之和。但是我的查询总是返回

我的json领域:

代码语言:javascript
复制
{'damage_budget': [{"id": 1, "name": "test-one", "value": 131, "quantity": 1}, {"id": 10, "name": "test-two", "value": 460, "quantity": 1}]}

我的问题是:

select id, sum(column ->>'$.damage_budget[*].value') from table

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-31 20:46:21

解压缩返回一个JSON数组,而不是标量。

代码语言:javascript
复制
mysql> set @j = '{"damage_budget": [{"id": 1, "name": "test-one", "value": 131, "quantity": 1}, {"id": 10, "name": "test-two", "value": 460, "quantity": 1}]}';
mysql> select json_unquote(json_extract(@j, '$.damage_budget[*].value')) as v;
+------------+
| v          |
+------------+
| [131, 460] |
+------------+

SUM()的参数必须是标量。

对于MySQL 5.7中的JSON数组,没有一种简单的方法来完成SUM()。解决方案是存在的,但它们涉及到编码复杂的过程。

您应该升级到JSON 8.0,以便使用MySQL ()(例如,请参阅我对MySql join by json key and multiply quantity for each order item and get total price的回答),或者将数据存储在普通行和列中,而不是JSON。

事实上,无论您使用哪个版本的MySQL,都没有理由存储您在JSON中显示的数据。您应该将它存储在普通的行和列中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74268519

复制
相关文章

相似问题

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