{"boxs": {"x1": 1148, "x2": 1226, "y1": 306, "y2": 537, "ocr": [], "sort": [], "uuid": "54dafde869d8419bbaf4ec9dd7c6d92b", "label": 10001, "keypoint": []}}
{"boxs": {"x1": 1148, "x2": 1226, "y1": 306, "y2": 537, "ocr": [], "sort": [], "uuid": "54dafde869d8419bbaf4ec9dd7c6d92b", "label": 10003, "keypoint": []}}
{"boxs": {"x1": 1148, "x2": 1226, "y1": 306, "y2": 537, "ocr": [], "sort": [], "uuid": "54dafde869d8419bbaf4ec9dd7c6d92b", "label": 10002, "keypoint": []}}
聚合统计label出现的次数
select
JSON_EXTRACT(json_data, "$.boxs.label") as A,count(*) as total
from test
group by
{"boxs": {"x1": 1148, "x2": 1226, "y1": 306, "y2": 537, "ocr": [], "sort": [], "uuid": "54dafde869d8419bbaf4ec9dd7c6d92b", "label": 10001, "keypoint": []}}{"boxs": {"x1": 1148, "x2": 1226, "y1": 306, "y2": 537, "ocr": [], "sort": [], "uuid": "54dafde869d
JSON 格式字段是 Mysql 5.7 新加的属性,不够它本质上以字符串性质保存在库中的,刚接触时我只了解 $.xx 查询字段的方法,因为大部分时间,有这个就够了,其他交给程序就行了,但是最近一些操作需要更复杂的查询操作,所以赶紧了解下更多的方法。
JSON_EXTRACT(json_doc [,path])
查询字段
mysql> set @j = '{"name":"wxnacy"}';
mysql> select JSON_EXTRACT(@j, '$.name');
+----------------------------+
| JSON_EXTRACT(@j, '$.name
注意:此用法仅支持 MySQL 8.0 以上的版本
我们假设一个场景,字段中存储一个日期的 JSON,这个 JSON 的 Key 为星期的英文名称,具体 JSON 格式如下:
"monday": 390,
"Tuesday": 240,
"Wednesday": 150,
"Thursday": 160,
"Friday": 150,
"Saturday": 270,
"Sunday": 180
我们需要做的是对这些值进行取和,而 .
未生效的写法:
select json_extract(car_model_info,'$.series_code') AS series_code,count(*) from ef_order where pay_method=1 and status=100 and dealer_id=14 group by series_code
运行结果:未进行分组
【MySQL】对JSON数据操作(全网最全)
总所周知,mysql5.7以上提供了一种新的字段格式-json,大概是mysql想把非关系型和关系型数据库一口通吃,所以推出了这种非常好用的格式,这样,我们的很多基于mongoDb或者clickHouse的业务都可以用mysql去实现了。当然了,5.7的版本只是最基础的版本,对于海量数据的效率是远远不够的,不过这些都在mysql8.0解决了。今天我们就针对mysql的json数据格式操作做一个简单的介绍。
如何创建json格式字段
这里我们先创建一个简单的