【问题标题】:Node / Postgres SQL Select distinct entries then put all other entries with the same reference into one columnNode / Postgres SQL 选择不同的条目,然后将具有相同引用的所有其他条目放入一列
【发布时间】:2015-11-07 02:38:28
【问题描述】:

这个问题可能在某个地方被问到,但我似乎无法在搜索中正确地用词来找到准确的答案。

我正在对 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 中可能会更好,但我对此有点陌生,什么是(有点)有效的方法?

如果有办法在查询本身中执行此操作,那么这将是我的偏好。

谢谢

【问题讨论】:

  • 只为未来。这称为字符串连接。可能有助于解决类似问题。

标签: sql node.js postgresql


【解决方案1】:

一种sql方法:

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

【讨论】:

    【解决方案2】:

    您可以使用 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 中的此示例

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      相关资源
      最近更新 更多