我需要“总价值”之和。但是我的查询总是返回
我的json领域:
{'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
发布于 2022-10-31 20:46:21
解压缩返回一个JSON数组,而不是标量。
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中显示的数据。您应该将它存储在普通的行和列中。
https://stackoverflow.com/questions/74268519
复制相似问题