Postgresql 在删除重复项的Postgres查询中连接结果集
与之类似,我正在寻找一种方法,将查询结果的多行结果连接到一行中,但不保留重复项。我试图做的是将旧数据与新数据进行匹配,但在新数据集中只允许一个值,而以前允许多个值 目前,我可以使用with子句提取以下数据集:Postgresql 在删除重复项的Postgres查询中连接结果集,postgresql,Postgresql,与之类似,我正在寻找一种方法,将查询结果的多行结果连接到一行中,但不保留重复项。我试图做的是将旧数据与新数据进行匹配,但在新数据集中只允许一个值,而以前允许多个值 目前,我可以使用with子句提取以下数据集: id | new | old ---------------------- 1001 | x | a 1001 | x | b 1001 | x | c 1002 | y | b 1002 | y | e
id | new | old
----------------------
1001 | x | a
1001 | x | b
1001 | x | c
1002 | y | b
1002 | y | e
1002 | y | f
1003 | z | b
1003 | z | c
1004 | z | c
我需要做的更多是:
id | new | old
----------------------
1001 | x | a,b,c
1002 | y | b,e,f
1003 | z | b,c
1004 | z | c
除非我遗漏了什么,否则这是一个简单的分组id示例,new:
select id, new, string_agg(old, ',' order by old)
from dupes
group by id, new
order by id;
SQLFiddl:太好了,谢谢!我不知道这个函数。我对Postgres还是一个新手(我也不是一个专门的开发人员,我只是为我的团队处理一些小事情),我知道的大部分内容都是出于必要和/或随意浏览Postgres文档。string_agg()中缺少DISTINCT,但它适用于这个(唯一的)数据集。当需要“old”的唯一值时,确实需要使用DISTINCT。