使用 JSON 中的值连接表
Join tables with values from JSON
我在查询来自 json 个字段的数据时遇到问题。
我的 postgres 数据库(版本 10)中有一些 json 格式的列保存为文本
有时我需要能够在 json 值上加入两个 table。
我不知道我该怎么做..
这是一个简单的例子。
在我的select中我想输出水果和颜色。
我在水果 table 的 json 内有 color_cd 数字,我可以在 code_table 的另一个 json 内找到颜色。
我希望的输出应该是这样的
Fruit_ID Name Color
1000 Pear Green
1001 Banana Yellow
Fiddle link --> https://dbfiddle.uk/?rdbms=postgres_13&fiddle=3f989db0524e288183619bab63fc9add
您在 table code_table
上的专栏 records
在 json 数据中有问题,我解决了问题并更改为以下格式:
{"color_cd":{"30":{"code":"30","color":"yellow"},"55":{"code":"55","color":"green"},"60":{"code":"60","color":"red"}}}
您可以在 dbfiddle
中查看查询结构和结果
select
f.id,
f.name,
j_cd.value ->> 'color' as color
from
code_table ct
cross join jsonb_each(records::jsonb -> 'color_cd') j_cd
inner join fruits f on f.type_cd :: jsonb ->> 'color_cd' = j_cd.key::text
where
ct.name = 'color_cd'
我在查询来自 json 个字段的数据时遇到问题。
我的 postgres 数据库(版本 10)中有一些 json 格式的列保存为文本
有时我需要能够在 json 值上加入两个 table。
我不知道我该怎么做..
这是一个简单的例子。
在我的select中我想输出水果和颜色。
我在水果 table 的 json 内有 color_cd 数字,我可以在 code_table 的另一个 json 内找到颜色。
我希望的输出应该是这样的
Fruit_ID Name Color
1000 Pear Green
1001 Banana Yellow
Fiddle link --> https://dbfiddle.uk/?rdbms=postgres_13&fiddle=3f989db0524e288183619bab63fc9add
您在 table code_table
上的专栏 records
在 json 数据中有问题,我解决了问题并更改为以下格式:
{"color_cd":{"30":{"code":"30","color":"yellow"},"55":{"code":"55","color":"green"},"60":{"code":"60","color":"red"}}}
您可以在 dbfiddle
中查看查询结构和结果
select
f.id,
f.name,
j_cd.value ->> 'color' as color
from
code_table ct
cross join jsonb_each(records::jsonb -> 'color_cd') j_cd
inner join fruits f on f.type_cd :: jsonb ->> 'color_cd' = j_cd.key::text
where
ct.name = 'color_cd'