关于mysql order by 疑问

发布于 2021-11-30 01:52:28 字数 1516 浏览 676 评论 2

@final 在社区发了一遍,因问题比较急又在此重新提问,望见谅!

我的代码如下:
List<Object> param=new ArrayList<Object>();
StringBuffer where=new StringBuffer();
String rightsArea=getRightsArea();
if(!rightsArea.equals("")){
where.append(" and FIND_IN_SET(b.code,?)");
param.add(rightsArea);
}
orderby=" order by a.name asc,b.code desc";
String tableName="(select a.id,a.name,b.code from a left join b on a.id=b.id) tbl";
Page<Record> p = Db.paginate(this.getParaToInt("page", 1), this.getParaToInt("pageSize", 20), "select *", "from " + tableName+ " where 1=1 " + where.toString()+orderby, param.toArray());

执行的时候会提示sql错误,原因是jfinal得到的sql语句如下:
select count(*) from (select a.id,a.name,b.code from a left join b on a.id=b.id) tbl where 1=1 ,b.code desc

也就是说框架在计算行数时读取order by时错误(在包含逗号的多个排序条件中),是否我的写法有误?

请指教,谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清欢 2021-11-30 13:54:38

请教个问题,使用jfinal分页的时候,如何获取总记录数?加上totalRow=page.totalRow 总是报错

<@paginate totalRow=page.totalRow currentPage=page.pageNumber totalPage=page.totalPage .............

甜扑 2021-11-30 05:09:11

    jfinal 的 paginate 方法为了提升性能,所以会将计算总记录数的 sql 中 order by 部分给清除掉,因为查询总记录数量不需要 order by。所以你的 sql 参数在被清除这个 order by 时不正确,由于清除时用的正则表达式,所以正则匹配不到时只清掉了一部分。

   建议改一下 sql ,或者在合适的地方添加扩号来解决。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文