postgresql - 仅在一列上不同

postgresql - distinct only on one column

我有一个名为 eatable 的 table。它具有 type、name 等列。

type 列有 fruit, veggie, veggie, fruit, veggie 个值 .

name 列有 apple, brinjal, carrot, banana, cabbage.values

我希望输出为,类型列必须仅显示 2 行,名称应显示所有值。

应该如下所示:

我已经尝试了以下查询,但不是我所期望的:

select distinct on (type) type, name from eatable;

帮帮我!!

您可以使用 PostgreSQL 的 Aggregate Functions

SELECT type
    ,string_agg(NAME, ',') "name"
FROM eatable
GROUP BY type;

结果:

type   name  
text   text                 
------ ---------------------- 
fruit  apple,banana           
veggie brinjal,carrot,cabbage 

SELECT type
    ,array_agg(name) "name"
FROM eatable
GROUP BY type;

结果:

type   name  
text   text[]                   
------ ------------------------ 
fruit  {apple,banana}           
veggie {brinjal,carrot,cabbage} 

Demo