节点/ Postgres SQLselect不同的条目,然后将具有相同引用的所有其他条目放在一列中

这个问题可能被问到某处,但我似乎无法正确地在search中find准确的答案。

我正在查询一个Postgres数据库,它有很多连接,结果是这样的:

WON | name | item 1 Joe A 1 Joe B 2 Smith A 

所以每一个条目都有一行,我需要以某种方式得到结果:

 WON | name | item 1 Joe A, B 2 Smith A 

这可以在查询中完成,或者用NodeJS来完成,查询有成百上千的结果,所以得到一个不同的行(WON 1),然后在数据库中search匹配它的所有条目然后重复其余部分是不可行的,所以这可能会更好地完成在Node / Javascript,但我有点新,那么这将是一个(有点)有效的方式来做到这一点?

如果有一种方法可以在查询中做到这一点,那么这将是我的偏好。

谢谢

一个sql方法:

 SELECT won, name ,STRING_AGG(item, ',' ORDER BY item) AS items FROM myTable GROUP BY won, name ORDER BY won, name 

您可以使用GROUP BY和string_agg行cancat,有点像这样:

创build表格:

 CREATE TABLE test ( won int, name character varying(255), item character varying(255) ); insert into test (won, name, item) values (1,'Joe', 'A'),(1, 'Joe', 'B'),(2, 'Smith', 'A') 

在查询中这样做:

 select won, name, string_agg(item, ',') from test group by won, name order by won 

在sqlFiddle中看到这个例子