簡體   English   中英

Node / Postgres SQL 選擇不同的條目,然后將具有相同引用的所有其他條目放入一列

[英]Node / Postgres SQL Select distinct entries then put all other entries with the same reference into one column

這個問題可能是在某個地方問過的,但我似乎無法在搜索中正確表達它以找到准確的答案。

我正在對 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)然后在數據庫中搜索匹配它的所有條目然后重復其余的條目是不可行的,所以這可能在 Node/Javascript 中做得更好,但我對此有點陌生,什么是(有點)有效的方法來做到這一點?

如果有一種方法可以在查詢本身中做到這一點,那么這將是我的偏好。

謝謝

您可以使用 GROUP BY 和string_agg來取消行,如下所示:

創建表:

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 中查看此示例

一種sql方法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM