我想知道是否有可能在jsonb中过滤数组而不过滤整个表或取消嵌套?
假设我有一张table:
| ID| jsnob|
| --|--|
| 1 |第一个月|
| 2 |{"names":["anna"]}
个|
| 3 |{"names":["peter"]}
个|
我想有相同的表,但这样的名字被过滤,只有从“a”开始的名字:
| ID| jsnob|
| --|--|
| 1 |{"names":["anna", "armin"]}
个|
| 2 |{"names":["anna"]}
个|
| 3 |{"names":null}
个|
我用unnest(jsonb_array_elements)实现了它,然后group by回到json,但它相当慢。我想知道是否有更快的方法?
1条答案
按热度按时间pgvzfuti1#
您可以使用标量子查询逐个记录地执行此操作,而无需展平整个表,然后重新分组。
字符串
DB Fiddle
注意以上并不保证数组元素的顺序保持不变。严格来说,请使用下面的标量子查询。
型