我的数据库中有两列,一列是uid(myuid),另一列是表示每个用户宠物总数的键值对(totalpetsjson),我希望查询uid,然后对键匹配的JSON行求和。
此查询
SELECT totalpetsjson FROM mytable WHERE "myuid" IN ('john','andy')
两行中的结果
{'dogs':3,'cats':5,'fish':144}
{'dogs':2,'lizards':4,'cats':3'}
我想得到的结果是什么。我如何查询并合并上面的两行,使其看起来像下面这样?
{'dogs':5,'cats':8,'fish':144,'lizards':4}
2条答案
按热度按时间qxsslcnc1#
使用函数
json_each_text()
,它给出对(key, value)
,将values
转换为整数,并将它们按keys
分组求和。最后,将结果聚合为json:在db<>fiddle.中测试
sg2wtvxw2#
在klin之前的anwser的基础上,如果你不想整张表,而是想保持分组,那么这种方法可以扩展:
结果: