PostgreSQL:如何连接行[重复]

Posted

技术标签:

【中文标题】PostgreSQL:如何连接行[重复]【英文标题】:PostgreSQL: How to concatenate rows [duplicate] 【发布时间】:2016-12-09 18:20:30 【问题描述】:

所以,我有一个非常规的问题。我希望能够将具有相同 ID 的行连接成一大行。为了说明我的问题,让我举一个例子。这是查询:

SELECT b.id AS "ID",
       m.content AS "Conversation"
FROM bookings b 
INNER JOIN conversations c on b.id = c.conversable_id AND c.conversable_type = 'Booking'
INNER JOIN messages m on m.conversation_id = c.id
WHERE b.state IS NOT NULL
GROUP BY 1,2
LIMIT 1000;

这是输出:

ID     **Conversation
1223    "blah, blah, blah, blah"
1223    " ... blaaaah, blah.."
1223    "more blaaah"
1223    "last blah"
5000    "new id, with more blah"
5000    "and the blah continues"

有没有办法在保留 ID 的同时将对话行连接成一个聚合行?

像这样:

ID     Conversation
1223    "blah, blah, blah, blah, ... blaaaah blah.. more blaaah, last blah"
5000    "new id, with more blah and the blah continues"

我确信有一种有效的方法可以做到这一点。我只是无法自己弄清楚。

【问题讨论】:

group_concat() 是你的朋友。 可能是。那么可能是string_agg() 快速提问。如何为每条新消息换行? 没有换行符。您可以使用 string_agg( colx, e'\n' ) ,但它仍然是输出记录字段的一部分。 【参考方案1】:

通过查看this question 的精彩答案,我能够解决我自己的问题。就像使用 PostgreSQL string_agg()-function 一样简单。

【讨论】:

以上是关于PostgreSQL:如何连接行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL教程收集(中文文档/命令行工具/常用命令)

使用命令行参数运行 PostgreSQL .sql 文件

PostgreSQL - 如何在条件后连接行值

如果插入语句给出重复键异常(在表中找到行 id=1)如何更新 JDBC(Postgresql)中的语句

如何创建一个结构连接行作为嵌套文档 PostgreSQL

PostgreSQL 连接问题 FATAL: no pg_hba.conf entry for host