我需要“總”值的總和。但我的查詢總是回傳0
我的 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
uj5u.com熱心網友回復:
您的提取回傳一個 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] |
------------
to 的引數SUM()必須是標量。
在 MySQL 5.7 中,沒有簡單的方法對 JSON 陣列執行 SUM()。存在解決方案,但它們涉及對復雜程序進行編碼。
您應該升級到 MySQL 8.0,以便可以使用 JSON_TABLE() (例如,查看我對MySql join by json key 的回答,并為每個訂單專案乘以數量并獲得總價),或者將您的資料存盤在正常的行和列中,不是 JSON。
事實上,無論您使用哪個版本的 MySQL,都沒有理由將您顯示的資料存盤在 JSON 中。您應該將其存盤在正常的行和列中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/525241.html
標籤:mysqlsqlmysql-5.7元数据库mysql-json
上一篇:為什么MySQL不使用索引進行簡單的“SELECT*FROMTableWHEREfield='value'”查詢?
