在这个查询中,表a
的每一行都可能与表b
的数百行相关联。因此,array_agg
包含所有这些值。我希望能够为它设置一个限制,但我可以设置array_agg
,但没有办法设置限制。
select a.column1, array_agg(b.column2)
from a left join b using (id)
where a.column3 = 'value'
group by a.column1
我可以在数组上使用“slice”语法,但这是相当昂贵的,因为它首先必须检索所有行,然后丢弃其他行。
3条答案
按热度按时间f0brbegy1#
我会使用横向接合。
因为“id”限制已经在横向查询中,所以可以使用连接条件
on true
而不是using (id)
,我不知道哪个比较容易混淆。uidvcgyl2#
我认为您需要先计数,然后再汇总:
np8igboo3#