jsonb上的Postgresql数组交集

时间:2018-06-17 18:51:23

标签: arrays postgresql jsonb

鉴于存储在db中的以下数据:

{
  myArray: [
    {key: 'a'},
    {key: 'b'},
    {key: 'c'}
  ]
}

是否可以按如下方式查询交叉点?

[
  {key: 'a'},
  {key: 'd'}
]

你知道,即使{key: 'a'}不匹配,{key: 'a'}也是交集。

1 个答案:

答案 0 :(得分:1)

您可以使用简单的jsonbJOINjsonb_array_elements上进行交叉。 select element from tbl cross join jsonb_array_elements(tbl.jsonb_column -> 'myArray') a1(element) inner join jsonb_array_elements(jsonb '[{"key":"a"},{"key":"d"}]') a2(element) using (element); -- element ----------------- -- '{"key": "a"}' 函数:

{{1}}

http://rextester.com/IUGZ15294