节点/ 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中看到这个例子