我在stackoverflow上长时间搜索了这个答案,但没有找到有用的信息。 我在my_tbl中有如下数据:
folder_id | links
--------------+----------------------------------------------------------------
761 | [{"ids": "[82293,82292]", "index": "index_1"}, {"ids": "[82293,82292]", "index": "index_2"}]
769 | [{"ids": "[82323,82324]", "index": "index_3"}]
572 | [{"ids": "[80031,79674,78971]", "index": "index_4"}]
785 | [{"ids": "[82367,82369]", "index": "index_5"}, {"ids": "[82368,82371]", "index": "index_6"}]
768 | [{"ids": "[82292,82306]", "index": "index_7"}]
我希望能够获取所有包含82292的links->>'ids'的行。在这种情况下,它应该返回文件夹ID 761和768。
我已经通过- jsonb_array_elements(links) ->> 'ids'将ids数组从链接中分离出来。
不确定如何进一步操作。
@>
来完成这个操作,检查左侧的数组是否包含右侧的数组。 - Andomarcross join lateral
- 很棒的解决方案。 - bobmarksiewhere (ele->>'ids')::jsonb @> '[82292]' AND (ele->>'ids')::jsonb @> '[82306]'
然而,在我的Postgres 12.3机器上,这将导致返回0行。您知道为什么这在较新版本上可能无法正常工作吗? - inthedark72