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

如果誰有更好的方法解決按字段去重引發的分頁總頁數不准問題,或者發現我的這個解決方法在什麼情況下不適用,還請不吝賜教。

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