我有一张postgresql表格.下表"动物"可以解释我的问题:

name
------
tiger
cat
dog

现在我使用以下查询:

SELECT
    array_to_string(array_agg("name"), ', ')
FROM
    animals;

结果是:"老虎、cat 、狗".但我想先对聚合进行排序,然后再将其转换为字符串.这就是我所希望的结果:

"cat, dog, tiger".

那么,在将字符串数组转换为字符串之前,如何对postgresql 8.4中的字符串数组进行排序呢."name"行上的ORDER BY不起作用,内置的sort函数只处理整数值.

谁有好主意,如何在纯SQL中解决这个问题?

非常感谢

推荐答案

这将在PostgreSQL 9.0中提供:

http://www.postgresql.org/docs/9.0/static/release-9-0.html,第E.1.3.6.1节.聚集体

同时,你可以做一些类似的事情来解决这个问题(尽管有些笨重):

SELECT array_agg(animal_name)
FROM (
    SELECT "name" AS animal_name
    FROM animals
    ORDER BY "name"
) AS sorted_animals;

Postgresql相关问答推荐

如何高效地将行聚合到数组中,同时保留`NULL`来指示丢失的数据?

Org.postgresql.util.PSQLException:错误:函数LOWER(BYTEA)不存在

正在应用序列化迁移,但数据库没有更改

Gorm 创建表单数据文件上传错误

使用 pgAdmin 4 v7.4 在 Windows 11 上全新安装 PostgreSQL 15.3-3 无法启动 - 卡在正在加载 pgAdmin 4 v7.4...

如何将特定值排序为最后,其余记录按 id DESC 排序?

Django + Postgres + 大时间序列

如何从 .sql postgresql 备份恢复单个表?

OpenShift:如何从我的 PC 连接到 postgresql

从局域网访问 PostgreSQL 服务器

如何引用使用 ON CONFLICT 中的函数的唯一索引?

Psycopg2 使用占位符插入表格

避免 created_at 和 updated_at 由 sequelize 自动生成

将主键更改为自动递增

Rails:PG :: InsufficientPrivilege:错误:permission denied for relation schema_migrations

为 postgresql 存储过程设置隔离级别

获取json列键为空的记录

错误:ERROR: table name specified more than once

Android 的 JDBC 与 Web 服务

GRANT SELECT 特权使用一个语句对所有序列