分页查询group by,page里总条数为1

StringBuffer sql=new StringBuffer();
        sql.append("select * from (");
        sql.append(" SELECT u.id,u.userid,u.`realname` AS urealname,u.`telphone` AS utelphone,u.`viplevel`,u.`v0ctime`, ");
        sql.append(" pu.`realname` AS prealname,pu.`telphone` AS ptelphone,SUM(IFNULL(up.`price`,0)) price, ");
        sql.append(" (SELECT IFNULL(SUM(IFNULL(`future_price`,0)+IFNULL(`leapfrog_price`,0)),0) ");
        sql.append("     FROM ss_userprice WHERE ");
        sql.append("    PERIOD_DIFF( DATE_FORMAT( NOW( ) , '%Y%m' ) , DATE_FORMAT( createtime, '%Y%m' ) ) =0 ");
        sql.append("     AND userid=u.id ");
        sql.append(" )  yuePrice, ");
        sql.append(" (SELECT COUNT(1) FROM ss_proorder WHERE po_status<>'0' AND userid=u.id) AS orderNum ");
        sql.append(" FROM ss_user u ");
        sql.append(" LEFT JOIN ss_user pu ON u.`refereeuserid`=pu.`userid` ");
        sql.append(" LEFT JOIN ss_userprice up ON u.id=up.userid ");
        sql.append(" WHERE u.viplevel <> '-1'  ");
        if(StrKit.notBlank(name)){
            setAttr("name", name);
            sql.append(" and (u.`realname` LIKE '%"+name+"%' OR u.telphone LIKE '%"+name+"%' )");
        }
        sql.append(" GROUP BY u.`userid`");
        sql.append(" ) as mytable ");
        Page<Record> page = Db.paginate(getPN(), getPS(),sql.toString());

我的项目现在的jfinul版本为2.1,不支持你说的第三个参数true的解决方案,大佬,还有别的方案可以解决吗,不想换版本,怕冲突,最好有代码示例一下,哈哈哈,谢谢啦


评论区

JFinal

2019-08-07 17:49

最外层套一个 select * 试一试,大致这样:
select * ( 原来的 sql 在此 ) as temp


用的时候:
Db.paginate(pn, ps, "select *", "from (" + 原 sql 在此 + ") as temp");

liucanghai

2019-08-07 17:53

我已经套过了 ) as mytable 这个就是

liucanghai

2019-08-07 17:53

@JFinal 我已经套过了 ) as mytable 这个就是

liucanghai

2019-08-07 17:57

@JFinal 按照你的写,还是不好使,难道让我自己写分页吗-_-!

JFinal

2019-08-07 18:03

@liucanghai 通过现有的 Db.queryLong(...) Db.find(...) 封装一个工具方法,参考现有的 paginate 方法

chcode

2019-08-07 19:37

你就不能把sql写到模板里?

xiuj

2019-08-08 09:37

这样子玩sql,维护就傻眼了。

liucanghai

2019-08-08 09:47

@JFinal 好的,谢谢

JFinal

2019-08-08 11:08

@liucanghai 还有一个办法是升级到 jfinal 最新版, 照着升级文档来做,分分钟的事:
https://www.jfinal.com/doc/14-1

liucanghai

2019-08-08 17:45

@xiuj 我就是维护的,顺便更改需求,前一任程序员被甲方逼走了

JFinal

2019-08-08 17:51

@liucanghai 通过继承 Dialect 扩展很方便,扩展完后一行代码的事:
arp.setDialect(new ...);

热门反馈

扫码入社