我在 postgresql 中有一个表。下表“动物”可以解释我的问题:
name
------
tiger
cat
dog
现在我正在使用以下查询:
SELECT
array_to_string(array_agg("name"), ', ')
FROM
animals;
结果是:“虎、猫、狗”。但我想在将其转换为字符串之前对聚合进行排序。所以这就是我希望的结果:
"cat, dog, tiger".
那么如何在将 postgresql 8.4 中的字符串数组转换为字符串之前对其进行排序。 ORDER BY 对“name”行不起作用,内置排序函数仅处理整数值。
任何人都有一个好主意,如何用纯 SQL 解决这个问题?
非常感谢
理查德
对于现代 PostgreSQL(自版本 9.0 起),您可以使用ORDER BY聚合表达式中的子句 https://www.postgresql.org/docs/current/sql-expressions.html#SYNTAX-AGGREGATES:
SELECT
array_to_string(array_agg(name ORDER BY name), ', ')
FROM
animals;
此外,为了您的特定目的,您可以使用string_agg http://www.postgresql.org/docs/current/static/functions-aggregate.html简化您的查询:
SELECT
string_agg(name, ', ' ORDER BY name)
FROM
animals;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)