关于分页查询时在子查询中使用开窗函数报sql异常问题

    之前遇到一个问题,在分页语句的只查询中使用开窗函数(如 row_number() over,rank() over 等)的时候,执行 paginate 的时候会出现sql异常( over 附近有语法错误),是因为 over 中的 order by 被一并替换掉了。

    于是又回头翻文档,逛论坛。后来在论坛中看到一个相似的帖子,解决方法是替换Jfinal版本到3.0以上,无奈我用的已经是3.2版本,于是继续翻文档,发反馈。翻文档的时候发现了 paginatebyfullsql (文档可见),于是试了一下,结果还是不对(最终分页语句丢失子查询的‘select’),绝望!后面根据神秘人士指教:

仍然使用 paginateByFullSql, 在 sql 外层再套个 select 就可以了:
select * from (原 sql 在此 ) as temp

这种方法可以解决,不过貌似paginateByFullSql的动态sql不太方便操作

评论区

JFinal

2017-10-17 15:25

paginateByFullSql 主要是用来应对 sql 中包含复杂 order by 或者包含复杂 select 的

大部分情况下直接用 pagiante 就好

热门分享

扫码入社