由于很多人都亲自问过我这个问题,所以我想我会再作一次修改。这是一个具有SELECt,Migration和View
Creation的完整SQL的要点,以及一个实时sql提琴
( 提琴 不保证可用性) 。
假设您有这样的表(名为:JSON_TABLE):
ID CITY POPULATION_JSON_DATA----------------------------------------------------------------------- 1 LonDON {"male" : 2000, "female" : 3000, "other" : 600} 2 NEW YORK {"male" : 4000, "female" : 5000, "other" : 500}要选择每个json字段,您可以执行以下操作:
SELECT ID, CITY, json_extract(POPULATION_JSON_DATA, '$.male') AS POPL_MALE, json_extract(POPULATION_JSON_DATA, '$.female') AS POPL_FEMALE, json_extract(POPULATION_JSON_DATA, '$.other') AS POPL_OTHERFROM JSON_TABLE;
结果:
ID CITY POPL_MALE POPL_FEMALE POPL_OTHER -----------------------------------------------------------------1 LonDON 2000 3000 6002 NEW YORK 4000 5000 500
根据您的数据大小和json复杂度,这可能是一项昂贵的操作。我建议将其用于
- 表迁移到拆分数据库( 请参见附录2-B)
- 至少创建一个视图 (要点请参阅附录2-C)
请注意:您可能拥有 以双引号 (stringified) 开头的 json :
"{"male" : 2000, "female" : 3000, "other" : 600}"在Ubuntu和Mac OSX Sierra上使用Mysql 5.7进行了测试。



