我在postgresql中有一个表.下表"动物"将解释我的问题:
name
------
tiger
cat
dog
Run Code Online (Sandbox Code Playgroud)
现在我使用以下查询:
SELECT
array_to_string(array_agg("name"), ', ')
FROM
animals;
Run Code Online (Sandbox Code Playgroud)
结果是:"老虎,猫,狗".但我希望在将聚合转换为字符串之前对其进行排序.所以这是我希望的结果:
"cat, dog, tiger".
Run Code Online (Sandbox Code Playgroud)
那么如何在将postgresql 8.4转换为字符串之前对其进行排序.行"name"上的ORDER BY不起作用,内置排序函数仅处理整数值.
任何人都好主意,如何在纯SQL中解决这个问题?
理查德很多
Mik*_*e T 53
对于现代PostgreSQL(从9.0版开始),您可以ORDER BY在聚合表达式中使用子句:
SELECT
array_to_string(array_agg(name ORDER BY name), ', ')
FROM
animals;
Run Code Online (Sandbox Code Playgroud)
此外,出于特定目的,您可以使用string_agg简化查询:
SELECT
string_agg(name, ', ' ORDER BY name)
FROM
animals;
Run Code Online (Sandbox Code Playgroud)
Mat*_*ood 14
这将在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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22279 次 |
| 最近记录: |