当前使用版本(必填,否则不予处理)

3.4.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

sqlserver数据库使用分页组件分页的时候会有自相矛盾的问题。

重现步骤(如果有就写完整)

我的基础sql如下 select UnitNo,count(*) cnt from LBS_Unit t group by UnitNo order by UnitNo 使用分页组件,会根据我的基础sql先查询总数,生成类似这样的sql: select count(*) cnt from ( select UnitNo,count(*) cnt from LBS_Unit t group by UnitNo order by UnitNo ) tt 这样的sql,sqlserver数据库本身就不支持,会报错: [S0001][1033] The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified. 那么我根据提示改成这样: select count(*) cnt from ( select TOP 100 PERCENT UnitNo,count(*) cnt from LBS_Unit t group by UnitNo order by UnitNo ) tt 查询总数会通过,然后分页组件会生成分页sql,类似: select TOP 100 PERCENT UnitNo,count(*) cnt from LBS_Unit t group by UnitNo order by UnitNo offset 4 rows fetch next 5 rows only 然后这样的sql,sqlserver也不支持,会报错: [S0002][10741] A TOP can not be used in the same query or sub-query as a OFFSET. 所以就矛盾了,没能解决。

目前解决办法

目前没有找到解决办法,改用pagehelper正常。

Comment From: riverO0o

+1 我也遇到了这样的问题。

Comment From: riverO0o

gc8eVLzpdoQKxN9

关键就是在这里了。 如果有group by,那么就不会去掉order by 但是有order by 的时候 count又出错

Comment From: qmdx

复杂无法处理场景请自定义 xml sql 解决