【问题标题】:PostgreSQL specifying a JSON field as other JSONPostgreSQL 将 JSON 字段指定为其他 JSON
【发布时间】:2016-07-16 19:24:54
【问题描述】:

我想从我的 PostgreSQL 数据库运行版本中获取 json:

x86_64-unknown-linux-gnu 上的 PostgreSQL 9.3.1,由 gcc (GCC) 编译 4.4.7 20120313(红帽 4.4.7-3),64 位

我想得到的数据是这样的:

{
  "a" : "value",
  "b" : {
        "c" : "some_vaue here"
   }
}

我从一张表中获取价值,并使用连接从其他表中获取some_value

我怎样才能做到这一点?

这里有类似的东西,但我收到一个错误:

QUERY="
    SELECT row_to_json(o) FROM (
      SELECT oltl.id::text as ordinal, 
             oltl.nid as code,
             oltl.description as description, 
             SELECT row_to_json(j) 
               FROM ( SELECT cilantag.tag as code ) AS j
        from olt_languages oltl 
               inner join ci_language_tags cilantag 
                       on oltl.ci_language_tag_id=cilantag.id
    ) AS o";

我得到的错误是

错误:“SELECT”处或附近的语法错误 第 1 行:...oltl.nid 作为代码,oltl.description 作为描述,选择行... ^` 在此处输入代码

【问题讨论】:

    标签: json postgresql postgresql-9.3


    【解决方案1】:

    选择列表中的子查询必须用括号括起来,试试:

    SELECT row_to_json(o) 
    FROM (
        SELECT 
            oltl.id::text AS ordinal, 
            oltl.nid AS code,
            oltl.description AS description, 
            (           -- added
                SELECT row_to_json(j)
                FROM (
                    SELECT cilantag.tag AS code 
                    ) AS j
            ) AS tags   -- + alias
        FROM olt_languages oltl 
        INNER JOIN ci_language_tags cilantag 
        ON oltl.ci_language_tag_id=cilantag.id
    ) AS o
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多