我在 postgresql 中有一个表。下表“动物”将做解释我的问题:
name
------
tiger
cat
dog
现在我正在使用以下查询:
SELECT
array_to_string(array_agg("name"), ', ')
FROM
animals;
结果是:“老虎、猫、狗”。但我想在将聚合转换为字符串之前对其进行排序。这就是我希望的结果:
"cat, dog, tiger".
那么在将字符串数组转换为字符串之前,如何在 postgresql 8.4 中对字符串数组进行排序。 “名称”行上的 ORDER BY 不起作用,内置排序函数仅处理整数值。
谁有好主意,如何用纯 SQL 解决这个问题?
非常感谢 理查德
最佳答案
对于现代 PostgreSQL(从 9.0 版开始),您可以使用 ORDER BY
clause in an aggregate expression :
SELECT
array_to_string(array_agg(name ORDER BY name), ', ')
FROM
animals;
此外,为了您的特定目的,您可以使用 string_agg
简化您的查询:
SELECT
string_agg(name, ', ' ORDER BY name)
FROM
animals;
关于postgresql - 对在 postgresql 中使用 array_agg 创建的文本聚合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3461470/