当没有输入行时,让array_agg()不返回任何行

时间:2017-12-29 09:40:54

标签: postgresql

如果没有行,则函数array_agg()将返回null。如何更改此项以便不返回任何行?例如,采用以下简单查询:

select array_agg(country)
from   country
where  false

这将返回值为null的一行。我想没有返回任何行。

1 个答案:

答案 0 :(得分:2)

使用HAVING子句删除空数组:

[local] #= select array_agg(1) from a where false;
┌───────────┐
│ array_agg │
├───────────┤
│ (null)    │
└───────────┘
(1 row)

[local] #= select array_agg(1) from a where false having array_agg(1) <> '{}';
┌───────────┐
│ array_agg │
├───────────┤
└───────────┘
(0 rows)