查询条件需要用distinct的时候会出现count错误

public Page<M> paginate(int pageNumber, int pageSize, String select, String sqlExceptSelect, Object... paras) {

}
//该出直接select count 会导致查出来的数据跟实际不匹配
List result = Db.query(config, conn, "select count(*) " + DbKit.replaceFormatSqlOrderBy(sqlExceptSelect), paras);


评论区

JFinal

2016-12-09 19:25

如果是 paginate 方法中使用 distinct,在外层套一个 select * from (原 sql ) as t 就可以了:
paginate(1, 10, "select *", "from ( select distinct ....) as temp", p1, p2,..., pn)

JFinal

2016-12-09 19:39

原因是 paginate 方法会直接使用 "select count(*) ...." 去查询分页需要的总记录条数,这时就丢弃了 distinct 关键字,外层套一个 select * 就没事

热门反馈

扫码入社