[Java]当分页遇到Group By,我该怎么得到你——count(*)?

做项目,遇到了这个问题。通常的分页在获得总的记录条目数量时都会在原始查询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()就是分组的数量。

如果谁有更好的方法解决按字段去重引发的分页总页数不准问题,或者发现我的这个解决方法在什么情况下不适用,还请不吝赐教。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章