Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 在删除重复项的Postgres查询中连接结果集_Postgresql - Fatal编程技术网

Postgresql 在删除重复项的Postgres查询中连接结果集

Postgresql 在删除重复项的Postgres查询中连接结果集,postgresql,Postgresql,与之类似,我正在寻找一种方法,将查询结果的多行结果连接到一行中,但不保留重复项。我试图做的是将旧数据与新数据进行匹配,但在新数据集中只允许一个值,而以前允许多个值 目前,我可以使用with子句提取以下数据集: id | new | old ---------------------- 1001 | x | a 1001 | x | b 1001 | x | c 1002 | y | b 1002 | y | e

与之类似,我正在寻找一种方法,将查询结果的多行结果连接到一行中,但不保留重复项。我试图做的是将旧数据与新数据进行匹配,但在新数据集中只允许一个值,而以前允许多个值

目前,我可以使用with子句提取以下数据集:

  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。