我有一张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相关问答推荐

带有regex表达式的Postgres SQL

如何返回old_ids和重复行的映射';来自PostgreSQL函数的s new_id

如何在 postgres where 子句中使用 or 对条件进行组合或分组

如何在docker-compose中使用docker secrets设置ConnectionString?

找出两个表之间的差异

是否可以短时间运行 VACUUM FULL 并获得一些好处?

如何在 PSQL 中查找从另一个表继承的子表

如何将 postgres 数据库转换为 sqlite

如何在 psycopg2 中使用服务器端游标

在 postgres 中Decode解码相似的函数

如何在容器内创建 postgres 扩展?

如何判断每个组中是否存在值

避免 created_at 和 updated_at 由 sequelize 自动生成

获取全文搜索配置语言的完整列表

在 PostgreSQL 中使用 Cursors进行分页

Hibernate 启动很慢

在 PGAdmin 中搜索所有功能的文本

PostgreSQL regexp_replace() 只保留一个空格

如何查询前 10 行,下一次从表中查询其他 10 行

性能调优:为布尔列创建索引