【MyBatis】分页组件PageHelper和SQLServer的多表关联分页查询问题


分页组件PageHelper和SQLServer的多表关联分页查询问题

原来使用4.1.7,当2个表关联查询的时候如果有同名,Select的时候给予了别名,使用PageHelper.orderBy("别名"),会出现错误

因为生成的语句是

SELECT TOP 3 Name,CTypeId FROM 
(
SELECT ROW_NUMBER() OVER ( ORDER BY TypeId DESC) PAGE_ROW_NUMBER, A.Name,A.TypeId as CTypeId FROM Customer A 
LEFT JOIN CustomerType B ON A.TypeId = B.TypeId
) AS PAGE_TABLE_ALIAS 
WHERE PAGE_ROW_NUMBER > 0 
ORDER BY PAGE_ROW_NUMBER  

因为(ORDER BY TypeId DESC)中TypeId是不知道哪个表的

后来查看更新记录,后面的版本更新了这个问题

现在使用最新版本5.1.3,生成的语句是

SELECT TOP 3 Name,CTypeId FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY CTypeId DESC) 
    PAGE_ROW_NUMBER, Name, CTypeId FROM (
        SELECT A.Name, A.TypeId AS CTypeId 
        FROM Customer A LEFT JOIN CustomerType B ON A.TypeId = B.TypeId
    ) AS PAGE_TABLE_ALIAS
) AS PAGE_TABLE_ALIAS 
WHERE PAGE_ROW_NUMBER > 0 ORDER BY PAGE_ROW_NUMBER 

可见其中增加了一个子查询,解决了这个问题


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM