今天看了一下 paginate的源码,发现在代码中会区分有没有group by ,替换order by 等这些和具体sql相关的东西,感觉这样代码处理会比较累,还有可能情况处理不全。
我的建议是 对sql语句不进行处理,如果sql有误就和正常一样报sql异常
对于分页的处理我们可以在传过来的sql报上一层
比如
原语句是 select org_id from elm.org order by org_name;
我们在处理的时候给他包上一层组成新的sql,如下
select * from (select org_id from elm.org order by org_name) ;
然后后边的代码只需要对这个sql进行分页处理就可以了,这样无论红色的sql多么复杂,我们后台的逻辑都会很简单。
不知道我说的对不对,还是我考虑的太简单了
group by 如果不处理,用在分页中时直接就造成分页错误。将 sql 包裹在 select * from(...) 内部,性能不如现有的方案