【发布时间】:2017-01-14 12:58:49
【问题描述】:
是否可以计算按 json 键分组的 json 值的总和?
谷歌云sql上的Mysql版本是5.7.17。
Example_1:我的观点的一个简短例子:
col1 | col2
-----|-----------------------
aaa | {"key1": 1, "key2": 3}
-----|-----------------------
bbb | {"key1": 0, "key2": 2}
-----|-----------------------
aaa | {"key1": 50, "key2": 0}
SQL 查询应该产生:
col1 | col2
-----|-----------------------
aaa | {"key1": 51, "key2": 3}
-----|-----------------------
bbb | {"key1": 0, "key2": 2}
或
是否可以使用以下任何架构?
示例_2:
col1 | col2
-----|-----------------------
aaa | {{"key_name" : "key1", "key_value" : 1}, {"key_name" : "key2", "key_value" : 3}}
-----|-----------------------
bbb | {{"key_name" : "key1", "key_value" : 0}, {"key_name" : "key2", "key_value" : 2}}
-----|-----------------------
aaa | {{"key_name" : "key1", "key_value" : 50}, {"key_name" : "key2", "key_value" : 0}}
示例_3:
col1 | col2
-----|-----------------------
aaa | [{"key_name" : "key1", "key_value" : 1}, {"key_name" : "key2", "key_value" : 3}]
-----|-----------------------
bbb | [{"key_name" : "key1", "key_value" : 0}, {"key_name" : "key2", "key_value" : 2}]
-----|-----------------------
aaa | [{"key_name" : "key1", "key_value" : 50}, {"key_name" : "key2", "key_value" : 0}]
示例_4:
col1 | col2
-----|-----------------------
aaa | {"key1": {"key_name" : "key1", "key_value" : 1}, "key2": {"key_name" : "key2", "key_value" : 3}}
-----|-----------------------
bbb | {"key1": {"key_name" : "key1", "key_value" : 0}, "key2": {"key_name" : "key2", "key_value" : 2}}
-----|-----------------------
aaa | {"key1": {"key_name" : "key1", "key_value" : 50}, "key2": {"key_name" : "key2", "key_value" : 0}}
【问题讨论】:
-
你有解决办法吗?
-
我会从放弃 JSON 开始;将键:值对放在 EAV 模式中。那么 SQL 就很简单了。
-
团队,请不要因为不探索新概念而限制自己。我喜欢 mysql 中的 json 支持,它具有巨大的价值,并且想要探索所有的可能性。所以请不要给传统的group by option作为答案。
-
@wchiquito 你能帮帮忙吗..?
标签: mysql json aggregate-functions google-cloud-sql