栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

合并查询中的串联JSON(B)列

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

合并查询中的串联JSON(B)列

这是可用于在PostgreSQL中创建json对象的内置函数的完整列表。http://www.postgresql.org/docs/9.4/static/functions-
json.html

  • row_to_json
    并且
    json_object
    不允许您定义自己的密钥,因此不能在此处使用
  • json_build_object
    希望您提前知道我们的对象将具有多少个键和值,在您的示例中就是这种情况,但在现实世界中并非如此
  • json_object
    看起来是解决此问题的好工具,但它迫使我们将价值观转化为文字,因此我们也无法使用

好吧…好吧,我们不能使用任何经典功能。

让我们看一些聚合函数,并希望获得最好的… http://www.postgresql.org/docs/9.4/static/functions-
aggregate.html

json_object_agg
是构建对象的唯一聚合函数,这是我们解决此问题的唯一机会。这里的窍门是找到正确的
json_object_agg
函数功能。

这是我的测试表和数据

CREATE TABLE test (  id    SERIAL PRIMARY KEY,  json1 JSONB,  json2 JSONB);INSERT INTO test (json1, json2) VALUES  ('{"a":"b", "c":"d"}', '{"e":"f"}'),  ('{"a1":"b2"}', '{"f":{"g" : "h"}}');

经过一些试验和错误之后,

json_object
您可以在PostgreSQL 9.4中合并json1和json2

WITH all_json_key_value AS (  SELECt id, t1.key, t1.value FROM test, jsonb_each(json1) as t1  UNIOn  SELECt id, t1.key, t1.value FROM test, jsonb_each(json2) as t1)SELECt id, json_object_agg(key, value) FROM all_json_key_value GROUP BY id

编辑 :对于PostgreSQL 9.5+,请看下面的Zubin的答案



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/437144.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号