[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()就是分组的数量。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值