`
dyingcow
  • 浏览: 129395 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
<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()就是分组的数量。

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics