jfinal分页查询的时候对distinct怎么处理

尹东东 发布于 2013/03/25 20:02
阅读 985
收藏 1

jfinal分页查询的时候对distinct怎么处理?我本身用distinct查出来的数据是352,jfinal查询总数量的时候直接count(*)返回369,这样导致页数变多1页,点击这一页的时候实际是没有数据的 @JFinal

加载中
0
27号
27号
分页的查询语句是要你自己写的。
0
JFinal
JFinal

在原来的 sql 外层包一层  select * from ( 原来带有 distinct 的整个 sql) as temp 这样即可解决:

Db.paginate(10, 10, "select *", "from (原带有 distinct 的 sql) as temp", p1, p2, ..., pn);


大白熊
大白熊
@jfinal 这样嵌套会导致子查询为视图时性能降低。比直接select count(distinct ..) 慢一倍多,所以在分页计算总记录数时,能不能默认不是select count(*) from table 而是取我们写的sql中select 指定的列,如select count(distinct col1,col2) from table
0
JFinal
JFinal

升级到 jfinal 3.1 以后,使用其中的 paginateByFullSql(...) 即可解决,具体细节可以看一下 jfinal 手册

余书慧
余书慧
@jfinal paginateByFullSql也没有解决包含distinct 分页问题,还是一样会报错,还是拼接跟之前一样SELECT TOP 30 tempcolumn=0, DISTINCT
返回顶部
顶部