当前使用版本(必填,否则不予处理)
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
关键就是在这里了。 如果有group by,那么就不会去掉order by 但是有order by 的时候 count又出错
Comment From: qmdx
复杂无法处理场景请自定义 xml sql 解决