<link rel="stylesheet" type="text/css" href="http://liushi.hitidea.org/plugins/plogeshi/styles/plogeshi.css">
做项目,遇到了这个问题。通常的分页在获得总的记录条目数量时都会在原始查询sql前加入select count(*)来做。但是当遇到sql是以group by结尾时,这样得到的结果却是每一个group的子数量,不能得到实际的去重记录数。解决的办法我想到两个,第一个是在一个开源项目的代码里看到的,先去掉group by字句部分,再添加
select count(*),虽然可以兼容group by,但是得到的记录数是去重之前的数量,有失偏颇。第二个方法还是直接加入select count(*)进行查询,不过在直接取第一个记录数为总记录数之前,先判断一下:如果返回的List.size()为1,则直接去第一个元素的整数值;否则,取List.size()作为记录数量,因为这时是查询的含有group by的sql语句,List.size()就是分组的数量。
如果谁有更好的方法解决按字段去重引发的分页总页数不准问题,或者发现我的这个解决方法在什么情况下不适用,还请不吝赐教。
本文探讨了在使用GROUP BY时遇到的分页问题及两种解决方案。一种是去除GROUP BY并添加COUNT(*),但结果包含重复数据。另一种是直接添加COUNT(*)查询,并通过判断返回结果的List大小来确定记录数。
3417

被折叠的 条评论
为什么被折叠?



