gpt4 book ai didi

sql - 有限制且无全表扫描的聚合函数

转载 作者:行者123 更新时间:2023-11-29 12:36:53 26 4
gpt4 key购买 nike

我有照片表:

create table photo(
id integer,
...
user_id integer,
created_at date
);

我想达到与以下相同的结果:

select 
json_agg(photo),
created_at,
id_user
from photo
group by created_at, id_user
order by created_at desc, id_user
limit 5;

但避免对照片进行全表扫描。

这可能吗?我在考虑递归 CTE,但无法构建它。

最佳答案

假设您在 photo(id_user, created_at) 上有一个索引,那么您可以使用子查询选择您想要的五行。然后使用连接或相关子查询来获取其余信息:

select cu.created_at, cu.id_user,
(select json_agg(p.photo)
from photo p
where cu.created_at = p.created_at and cu.id_user = p.id_user
)
from (select distinct created_at, id_user
from photo p
order by created_at desc, id_user
limit 5
) cu
order by cu.created_at desc, cu.id_user ;

关于sql - 有限制且无全表扫描的聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33896110/

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