gpt4 book ai didi

java - 使用笛卡尔积分页

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

如果需要更多信息来回答此问题,请添加评论。

我们有一个返回笛卡尔积的查询。由于结果很多,因此可能有大量的物体发生水合。我们希望在数据库端进行简单的分页,这样速度很快,因此它只从第 n*page 行开始提取 n 个结果,其中 n 是 100。

我们遇到的麻烦是对查询执行了distinct,以便仅返回必要的行。但是,这最终会过滤结果,因此您得到的结果少于 100。

因此,即使我们有页码,如果不执行查询来首先查看起点(即我们不能使用 rownum),我们也不知道从哪里开始或停止,并且可能会循环直到我们得到 100 个结果,你就明白了。很乱。

如果需要,我们可以直接执行 SQL,但重构表之类的操作不可行。

无论如何,我无法想象我们是第一个遇到这种情况的人,所以我想知道是否有办法做到这一点。

提前致谢!

编辑:@nicolas78 发布了一条评论,准确描述了情况。

最佳答案

您需要将 DISTINCT 进一步插入查询中,以便它在应用分页之前完成。例如:

select deptno from
( select deptno, rownum as rn from
( select DISTINCT deptno
from emp
order by deptno
)
where rownum < :pagenum*100
)
where rn > (:pagenum-1)*100;

关于java - 使用笛卡尔积分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3354103/

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