PostgreSQL 中针对多个记录和单个 ID 连接字段值
许多数据库应用都需要将与单个标识符相关的多个值组合成单个连接字符串。当查询每个唯一 ID 具有多条记录的表时,此操作特别有用。
MySQL 中的 GROUP_CONCAT 函数
在 MySQL 中,GROUP_CONCAT 函数提供了一种直接实现此目标的方法。但是,GROUP_CONCAT 函数在 PostgreSQL 中不可直接使用。
PostgreSQL 中 GROUP_CONCAT 的等效项
在 PostgreSQL 中,string_agg 函数是 MySQL 的 GROUP_CONCAT 的等效项。此函数允许您连接字符串,同时指定分隔符(例如逗号)来分隔连接的值。
示例:使用 string_agg 的 PostgreSQL 查询
考虑原始问题中提供的示例表:
id | some_column |
---|---|
TM67 | 4 |
TM67 | 9 |
TM67 | 72 |
TM99 | 2 |
TM99 | 3 |
可以使用以下 PostgreSQL 查询来连接每个唯一 id 的 some_column 列的值:
<code class="language-sql">SELECT id, string_agg(some_column::text, ',') AS values FROM the_table GROUP BY id;</code>
结果:
id | values |
---|---|
TM67 | 4,9,72 |
TM99 | 2,3 |
此查询为每个唯一 id 检索一行,并将 some_column 列的值连接到一个带有逗号作为分隔符的单个字符串中。
注意: string_agg 函数在 PostgreSQL 9.0 版本中引入。对于早期版本的 PostgreSQL,可以使用 generate_series 或 group_concat_agg 扩展作为替代方案来实现相同的功能。 some_column::text
的类型转换确保了即使 some_column
不是文本类型,也能正确连接。
以上是如何使用单个 ID 连接 PostgreSQL 中多个记录的字段值?的详细内容。更多信息请关注PHP中文网其他相关文章!