我的postgresql数据库表中有一个称为authors的jsonb列,其数据如下:
[{"id":134,"nameKey":"smith, john"},
{"id":112,"nameKey":"bats, billy"}]
如何从jsonb author列包含ID为112的作者的表中返回所有行?
我需要一些像
select * from record
where authors -> id = 2
我还需要命名:
select * from gardner_record
where authors -> nameKey like '%john%'
我发现几乎不可能理解postgresql jsonb文档。当我尝试通过ID选择时,提示我缺少演员表。当我尝试按名称选择时,它说该列不存在。
我应该如何查询此列?
答案 0 :(得分:0)
使用jsonb_array_elements
select t.*
from t cross join jsonb_array_elements(authors) as j
where j->>'id' = '112'
select t.*
from t cross join jsonb_array_elements(authors) as j
where j->>'nameKey' like '%john%'