PostgreSQL中jsonb_path_query_array如何对数组内值去重?
PostgreSQL jsonb_path_query_array 结果去重方案
jsonb_path_query_array本身没有内置的去重参数,要实现数组元素去重,可以通过拆分元素→去重→重新聚合的方式处理,以下是具体实现:
方法示例
假设你的表主键为id,JSONB字段为your_json_column,执行以下查询即可得到去重后的数组:
SELECT id, jsonb_agg(DISTINCT elem) AS unique_types FROM public.your_table, jsonb_path_query(your_json_column, '$.Idents.type') AS elem GROUP BY id;
补充说明
- 如果JSON数组中包含
null值,且需要过滤掉这些空值,可以在查询中添加条件:SELECT id, jsonb_agg(DISTINCT elem) AS unique_types FROM public.your_table, jsonb_path_query(your_json_column, '$.Idents.type') AS elem WHERE elem IS NOT NULL GROUP BY id; - 若表中没有明确的分组键(如主键),可以用
ctid临时分组(仅适用于无并发修改的场景),或者根据实际业务字段分组。
内容的提问来源于stack exchange,提问作者Stanislav Muryndin
相关产品推荐
相关产品推荐

