gpt4 book ai didi

sql - postgres 中的聚合有限制

转载 作者:行者123 更新时间:2023-12-02 02:54:46 24 4
gpt4 key购买 nike

在此查询中,表a 的每一行都可以有数百行与其关联的表b。因此 array_agg 包含所有这些值。我希望能够为其设置一个限制,但在 array_agg 中我可以执行 order by 但无法设置限制。

select a.column1, array_agg(b.column2)
from a left join b using (id)
where a.column3 = 'value'
group by a.column1

我可以在数组上使用“切片”语法,但这非常昂贵,因为它首先必须检索所有行,然后丢弃其他行。执行此操作的正确有效方法是什么?

最佳答案

我会使用横向连接。

select a.column1, array_agg(b.column2)
from a left join lateral
(select id, column2 from b where b.id=a.id order by something limit 10) b using (id)
where a.column3 = 'value'
group by a.column1

由于“id”限制已经存在于横向查询中,因此您可以将连接条件设置为on true,而不是使用(id)。我不知道哪一个更容易混淆。

关于sql - postgres 中的聚合有限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61369245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com