PostgreSQL如何仅在值不同时拼接字符串?
解决PostgreSQL string_agg聚合时去重的问题
嘿,要去掉拼接结果里的重复国家值,其实只需要在string_agg函数里加上DISTINCT关键字就可以了——PostgreSQL从9.0版本开始就支持在聚合函数中使用DISTINCT来过滤重复值。
修改后的创建视图语句如下:
CREATE VIEW a AS SELECT project_ref, string_agg(DISTINCT country, ', ') AS country FROM b GROUP BY project_ref ORDER BY project_ref ASC; -- 注意你原语句里的ORDER BY写的是project_num,和表结构里的字段名不符,这里改成了project_ref,要是实际有project_num字段可以改回去
执行这段语句后,就能得到去重后的聚合结果:
project_ref | country
1 | Italy
2 | France, Italy
内容的提问来源于stack exchange,提问作者Thierry
相关产品推荐
相关产品推荐

