使用笛卡尔乘积的java分页
如果需要更多信息来回答此问题,请添加评论
我们有一个返回笛卡尔乘积的查询。由于有很多结果,有可能有大量的物体被水化。我们希望在数据库端进行简单的分页,因此它很快,所以它只从n*page行开始提取n个结果,其中n是100
我们遇到的问题是,正在对查询执行distinct
,以便只返回必要的行。但是,这最终会过滤结果,因此得到的结果少于100
因此,即使我们有页码,我们也不知道在哪里开始或停止,而不先进行查询以查看起点(即,我们不能使用rownum),并且可能会循环,直到得到100个结果,您就知道了。很乱
如果需要,我们可以直接使用SQL,但是重构表之类的东西是不可取的
不管怎样,我无法想象我们是第一个遇到这种情况的人,所以我想知道是否有办法做到这一点
提前谢谢
编辑:@nicolas78发表了一条评论,准确描述了当时的情况
# 1 楼答案
您需要将DISTINCT进一步推入查询中,以便在应用分页之前执行该操作。例如: