在制作动态报表的时候,如果需要字段灵活配置,用 json 存储数据,可以让查询变得非常简单。
业务场景:
绩效系统中,需要从10个系统中抓取不同数据,并且性能不会太高,但是用于计算的只有其中 3 个,用哪 3 个看领导心情,设计一张表存储抓取到的数据。
1、傻瓜式做法,设计一张表,从字段 1 列到字段 3,用于存储抓到的数据(更过分地,直接预留10个字段);
2、想要优化好,数据用到啥取啥,取到的数据用 json 存储,使用的时候再进行解析。
CREATE TABLE `test_json` ( `id` varchar(32) NOT NULL, `content` json DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 设置内容 UPDATE test_json SET content='{"age":20, "name":"xiaoming"}' WHERE id = 'test'; -- 查询 json 中的一个字段 SELECT content->'$.name' FROM test_json where id = 'test'; -- 查询 SELECT content FROM test_json where id = 'test'; -- 更新字段 UPDATE test_json SET content = JSON_SET(content, '$.name', 'xiaodong') where id = 'test'; UPDATE test_json SET content = JSON_SET(JSON_SET(content, '$.age', 18), '$.name', 'xiaodong') where id = 'test'; -- 移除字段值 UPDATE test_json SET content = JSON_REMOVE(content, '$.name') where id = 'test'; -- 替换,原先无值,不会更新 UPDATE test_json SET content = JSON_REPLACE(content, '$.name', 'xiaoming') where id = 'test';
标签:SET,name,content,test,json,MySQL,类型,id From: https://www.cnblogs.com/chenss15060100790/p/17445637.html