sql - 使用其他列从 JSONB 列获取数据

标签 sql json postgresql jsonb

在我的 PostgreSQL 数据库中,我有以下架构:

CREATE TABLE survey_results (
    id integer,
    domain_name varchar,
    scores jsonb DEFAULT '{}'::jsonb
);

INSERT INTO survey_results (id, domain_name, scores)
    VALUES (1, 'food_insecurity','{"medica": { "categories": { "food_insecurity": "low", "housing": "high"  } } }');

INSERT INTO survey_results (id, domain_name, scores)
    VALUES (2, 'housing','{"medica": { "categories": { "food_insecurity": "low", "housing": "high"  } } }');

现在我想要带有一个附加列的 SQL 查询。此列应使用domain_name列值从scores#>>'{medica,categories}'获得分数,因此结果应如下:

    id         | domain_score
----------------------------------
    1          | low
    2          | high

如何在 PostgreSQL 中执行此操作?

这是我的数据库架构的数据库 fiddle :https://www.db-fiddle.com/f/i49SiaQn6qWcwiWDxVbHnn/2

最佳答案

使用->->>operators.您可以使用列名称作为操作数,例如:

select *, scores->'medica'->'categories'->>domain_name as domain_scores
from survey_results;

Db-Fiddle.

关于sql - 使用其他列从 JSONB 列获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49900887/

相关文章:

iOS : display svg from JSON

sql - 如何在嵌套查询中两次避免 "group by"

python - 如果父行的子行将在 SQLAlchemy 中被孤立,则防止删除父行

ruby - 如何引用多个 User_ID 并将其保存到一个表单中并在 Rails 4 App 的索引/显示页面中显示所述 ID

使用 GAE 云 sql 更新 PHP mySQL

连接一列的 SQL 查询

java - 如何获取 Facebook 中特定页面的所有帖子 ID

javascript - 如何在加载 JSON 之前停止 Angular 执行?

mysql - SQL 内连接分组依据

sql - 我应该提交还是回滚读取事务?