目前我的桌子看起来像这样
id | companies
----+-------------------------------------------------------------------
1 | {"companies": [{"name": "Google", "industry": "TECH"},
| {"name": "FOX News", "industry": "MEDIA"}]}
----+--------------------------------------------------------------------
2 | {"companies": [{"name": "Honda", "industry": "AUTO"}]}
----+--------------------------------------------------------------------
3 | {"companies": [{"name": "Nike", "industry": "SPORTS"}]}
我想获取所有companies
包含JSONB数组的行,其中JSONB数组包含列表中具有行业的公司["TECH", "SPORTS"]
。
在此示例中,查询将返回第1行和第3行。
由于所涉及的嵌套,我不确定如何执行此操作。
您可以使用jsonb_array_elements()
和exists
:
select t.*
from mytable t
where exists (
select 1
from jsonb_array_elements(t.companies -> 'companies') x(obj)
where x.obj ->> 'industry' in ('TECH', 'SPORTS')
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句