我有一个表,我想拉一行每个id与字段值连接。

例如,在我的表格中,我有这样的:

TM67 | 4  | 32556
TM67 | 9  | 98200
TM67 | 72 | 22300
TM99 | 2  | 23009
TM99 | 3  | 11200

我想输出:

TM67 | 4,9,72 | 32556,98200,22300
TM99 | 2,3    | 23009,11200

在MySQL中,我能够使用聚合函数GROUP_CONCAT,但这似乎在这里不起作用…PostgreSQL有类似的功能吗,或者有其他方法可以实现这个功能?


当前回答

SELECT array_to_string(array(SELECT a FROM b),', ');

也行。

其他回答

以及用于数组类型的版本:

select
  array_to_string(
    array(select distinct unnest(zip_codes) from table),
    ', '
);
SELECT array_to_string(array(SELECT a FROM b),', ');

也行。

从9.0开始,这变得更容易了:

SELECT id, 
       string_agg(some_column, ',')
FROM the_table
GROUP BY id

假设表your_table有三列(name, id, value),查询如下:

  select name, 
         array_to_string(array_agg(id), ','), 
         array_to_string(array_agg(value), ',')
    from your_table
group by name
order by name
;

"TM67"  "4,9,72"    "32556,98200,22300"
"TM99"  "2,3"       "23009,11200"

KI

试着这样做:

select field1, array_to_string(array_agg(field2), ',')
from table1
group by field1;