【问题标题】:How to populate a PostgresQL column with a list of all values from column1 from all rows with the current row’s value of column2如何使用当前行值为 column2 的所有行中的 column1 中的所有值的列表填充 PostgresQL 列
【发布时间】:2021-09-10 05:19:19
【问题描述】:

我有一个格式如下的 Postgres 表:

Fruit Owner
Apple John
Orange Susan
Pear Michael
Peach Susan

我想编写一个查询来创建一个新列Owner's Fruits,其中列出了相关行所有者拥有的所有水果,如下所示:

Fruit Owner Owner's Fruits
Apple John Apple
Orange Susan Orange, Peach
Pear Michael Pear
Peach Susan Orange, Peach

但是,我不知道该怎么做,甚至不知道如何表达我的问题,以便我在这里或谷歌上找到答案。

看起来应该很简单。我该怎么做?

【问题讨论】:

    标签: sql postgresql string-aggregation


    【解决方案1】:

    你可以使用string_agg():

    select t.*,
           string_agg(fruit, ',') over (partition by owner) as owners_fruits
    from t;
    

    也就是说,我实际上建议将值放入数组中:

    select t.*,
           array_agg(fruit) over (partition by owner) as owners_fruits
    from t;
    

    数组更加通用。

    【讨论】:

    • 完美!这样做。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 2022-01-17
    • 2021-11-20
    • 1970-01-01
    相关资源
    最近更新 更多